caring-route 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +8 -0
- package/index.html +20 -0
- package/package.json +63 -0
- package/pnpm-lock.yaml +4466 -0
- package/release.sh +31 -0
- package/src/App.vue +25 -0
- package/src/caring-route/helpers/util.js +55 -0
- package/src/caring-route/index.js +171 -0
- package/src/caring-route/package.json +12 -0
- package/src/main.js +10 -0
- package/src/manifest.json +72 -0
- package/src/pages/index/four.vue +14 -0
- package/src/pages/index/index.vue +48 -0
- package/src/pages/index/three.vue +14 -0
- package/src/pages/index/two.vue +14 -0
- package/src/pages.json +34 -0
- package/src/uni.scss +76 -0
- package/vite.config.js +8 -0
package/release.sh
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
###
|
|
3
|
+
# @Author: Wanko
|
|
4
|
+
# @Date: 2023-02-16 18:41:13
|
|
5
|
+
# @LastEditors: Wanko
|
|
6
|
+
# @LastEditTime: 2023-04-27 18:31:24
|
|
7
|
+
# @Description:
|
|
8
|
+
###
|
|
9
|
+
set -e
|
|
10
|
+
|
|
11
|
+
NODE_VERSION=$(node -p -e "require('./package.json').version")
|
|
12
|
+
echo "Current version is $NODE_VERSION"
|
|
13
|
+
echo "Enter release version: "
|
|
14
|
+
read VERSION
|
|
15
|
+
read -p "Releasing $VERSION - are you sure? (y/n)" -n 1 -r
|
|
16
|
+
echo # (optional) move to a new line
|
|
17
|
+
if [[ $REPLY =~ ^[Yy]$ ]]
|
|
18
|
+
then
|
|
19
|
+
echo "🕙 Releasing $VERSION ..."
|
|
20
|
+
|
|
21
|
+
git ci "[build] $VERSION"
|
|
22
|
+
npm version $VERSION --message "[release] $VERSION"
|
|
23
|
+
|
|
24
|
+
cd src/caring-route
|
|
25
|
+
npm version $VERSION --message "[release] $VERSION"
|
|
26
|
+
cd ../../
|
|
27
|
+
git push origin master
|
|
28
|
+
cd src/caring-route
|
|
29
|
+
npm publish
|
|
30
|
+
fi
|
|
31
|
+
echo "🎉 $VERSION version publish success"
|
package/src/App.vue
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: Wanko
|
|
3
|
+
* @Date: 2023-04-27 17:39:09
|
|
4
|
+
* @LastEditors: Wanko
|
|
5
|
+
* @LastEditTime: 2023-04-27 17:46:04
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<script>
|
|
9
|
+
export default {
|
|
10
|
+
onLaunch () {
|
|
11
|
+
console.log('App Launch')
|
|
12
|
+
},
|
|
13
|
+
onShow () {
|
|
14
|
+
console.log('App Show')
|
|
15
|
+
},
|
|
16
|
+
onHide () {
|
|
17
|
+
console.log('App Hide')
|
|
18
|
+
},
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<style lang="scss">
|
|
23
|
+
@import "caring-css/index.scss";
|
|
24
|
+
|
|
25
|
+
</style>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function isPlainObject(val) {
|
|
2
|
+
return toString.call(val) === '[object Object]'
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') {
|
|
6
|
+
let prefix = isPrefix ? '?' : ''
|
|
7
|
+
let _result = []
|
|
8
|
+
if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets';
|
|
9
|
+
for (let key in data) {
|
|
10
|
+
let value = data[key]
|
|
11
|
+
// 去掉为空的参数
|
|
12
|
+
if (['', undefined, null].indexOf(value) >= 0) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
// 如果值为数组,另行处理
|
|
16
|
+
if (value.constructor === Array) {
|
|
17
|
+
// e.g. {ids: [1, 2, 3]}
|
|
18
|
+
switch (arrayFormat) {
|
|
19
|
+
case 'indices':
|
|
20
|
+
// 结果: ids[0]=1&ids[1]=2&ids[2]=3
|
|
21
|
+
for (let i = 0; i < value.length; i++) {
|
|
22
|
+
_result.push(key + '[' + i + ']=' + value[i])
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
case 'brackets':
|
|
26
|
+
// 结果: ids[]=1&ids[]=2&ids[]=3
|
|
27
|
+
value.forEach(_value => {
|
|
28
|
+
_result.push(key + '[]=' + _value)
|
|
29
|
+
})
|
|
30
|
+
break;
|
|
31
|
+
case 'repeat':
|
|
32
|
+
// 结果: ids=1&ids=2&ids=3
|
|
33
|
+
value.forEach(_value => {
|
|
34
|
+
_result.push(key + '=' + _value)
|
|
35
|
+
})
|
|
36
|
+
break;
|
|
37
|
+
case 'comma':
|
|
38
|
+
// 结果: ids=1,2,3
|
|
39
|
+
let commaStr = "";
|
|
40
|
+
value.forEach(_value => {
|
|
41
|
+
commaStr += (commaStr ? "," : "") + _value;
|
|
42
|
+
})
|
|
43
|
+
_result.push(key + '=' + commaStr)
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
value.forEach(_value => {
|
|
47
|
+
_result.push(key + '[]=' + _value)
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
_result.push(key + '=' + value)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return _result.length ? prefix + _result.join('&') : ''
|
|
55
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 对象转url参数
|
|
3
|
+
* @param {*} data,对象
|
|
4
|
+
* @param {*} isPrefix,是否自动加上"?"
|
|
5
|
+
*/
|
|
6
|
+
import {
|
|
7
|
+
queryParams,
|
|
8
|
+
isPlainObject
|
|
9
|
+
} from './helpers/util.js'
|
|
10
|
+
|
|
11
|
+
const PARAMS_ROUTE = ['navigateTo', 'redirectTo', 'reLaunch']
|
|
12
|
+
const ROUTE_SET = ['navigateTo', 'redirectTo', 'reLaunch', 'navigateBack', 'switchTab']
|
|
13
|
+
|
|
14
|
+
// 放在Route类里也可以
|
|
15
|
+
function dispatchNavigate(config) {
|
|
16
|
+
const {
|
|
17
|
+
routeUrl: url,
|
|
18
|
+
routeType = 'navigateTo',
|
|
19
|
+
delta = 1,
|
|
20
|
+
events
|
|
21
|
+
} = config
|
|
22
|
+
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
uni[routeType]({
|
|
25
|
+
url,
|
|
26
|
+
delta,
|
|
27
|
+
events,
|
|
28
|
+
success: e => resolve(e),
|
|
29
|
+
fail: e => reject(e),
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
class Route {
|
|
35
|
+
handleParams(params = {}) {
|
|
36
|
+
const obj = {}
|
|
37
|
+
for (let key in params) {
|
|
38
|
+
if (typeof params[key] === 'object') {
|
|
39
|
+
obj[key] = encodeURIComponent(JSON.stringify(params[key]))
|
|
40
|
+
}
|
|
41
|
+
// 如果包含http链接进行编码操作
|
|
42
|
+
if (typeof params[key] === 'string' && params[key].includes('http')) {
|
|
43
|
+
params[key] = encodeURIComponent(params[key])
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return Object.assign(params, obj)
|
|
47
|
+
}
|
|
48
|
+
query(query) {
|
|
49
|
+
const obj = {}
|
|
50
|
+
for (const key in query) {
|
|
51
|
+
// 非对象数据才会处理
|
|
52
|
+
if (typeof query[key] !== 'object') {
|
|
53
|
+
const q = decodeURIComponent(query[key])
|
|
54
|
+
if (q.startsWith('{') || q.startsWith('[')) {
|
|
55
|
+
if (typeof q === 'string') {
|
|
56
|
+
obj[key] = JSON.parse(q)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Object.assign(query, obj)
|
|
62
|
+
}
|
|
63
|
+
navigate(url, config) {
|
|
64
|
+
if (!url) return false
|
|
65
|
+
if (typeof url === 'string') {
|
|
66
|
+
// 如果url为字符串,则config为params, 即route(url, params)的形式
|
|
67
|
+
if (!config) config = {}
|
|
68
|
+
config.routeUrl = this.mixinParam(url, config)
|
|
69
|
+
return dispatchNavigate(config)
|
|
70
|
+
}
|
|
71
|
+
if (isPlainObject(url)) {
|
|
72
|
+
config = url
|
|
73
|
+
// config中参数中包含type和url参数,表示这是一个请求
|
|
74
|
+
if (ROUTE_SET.includes(config.type) && typeof config.url === 'string') {
|
|
75
|
+
// 请求
|
|
76
|
+
config.routeUrl = url.url
|
|
77
|
+
config.routeType = url.type
|
|
78
|
+
Reflect.deleteProperty(config, 'url')
|
|
79
|
+
Reflect.deleteProperty(config, 'type')
|
|
80
|
+
config.routeUrl = this.mixinParam(config.routeUrl, config.params)
|
|
81
|
+
return dispatchNavigate(config)
|
|
82
|
+
} else {
|
|
83
|
+
// 解码路由参数
|
|
84
|
+
return this.query(config)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// 整合路由参数
|
|
89
|
+
mixinParam(url, params) {
|
|
90
|
+
url = url && this.addRootPath(url)
|
|
91
|
+
|
|
92
|
+
// 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary"
|
|
93
|
+
|
|
94
|
+
let query = ''
|
|
95
|
+
if (/.*\/.*\?.*=.*/.test(url)) {
|
|
96
|
+
// object对象转为get类型的参数
|
|
97
|
+
query = queryParams(this.handleParams(params), false) // 如果有url中有get参数,转换后无需带上"?"
|
|
98
|
+
// 因为已有get参数,所以后面拼接的参数需要带上"&"隔开
|
|
99
|
+
return (url += '&' + query)
|
|
100
|
+
} else {
|
|
101
|
+
// 直接拼接参数,因为此处url中没有后面的query参数,也就没有"?/&"之类的符号
|
|
102
|
+
query = queryParams(this.handleParams(params))
|
|
103
|
+
return (url += query)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
to(routeUrl, params) {
|
|
108
|
+
const config = {
|
|
109
|
+
routeType: 'navigateTo',
|
|
110
|
+
routeUrl,
|
|
111
|
+
params
|
|
112
|
+
}
|
|
113
|
+
this._navigateMethod(config)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
back(delta) {
|
|
117
|
+
const config = {
|
|
118
|
+
routeType: 'navigateBack',
|
|
119
|
+
delta
|
|
120
|
+
}
|
|
121
|
+
this._navigateMethod(config)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
tab(routeUrl) {
|
|
125
|
+
const config = {
|
|
126
|
+
routeType: 'switchTab',
|
|
127
|
+
routeUrl
|
|
128
|
+
}
|
|
129
|
+
this._navigateMethod(config)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
direct(routeUrl, params) {
|
|
133
|
+
const config = {
|
|
134
|
+
routeType: 'redirectTo',
|
|
135
|
+
routeUrl,
|
|
136
|
+
params
|
|
137
|
+
}
|
|
138
|
+
this._navigateMethod(config)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
launch(routeUrl, params) {
|
|
142
|
+
const config = {
|
|
143
|
+
routeType: 'reLaunch',
|
|
144
|
+
routeUrl,
|
|
145
|
+
params
|
|
146
|
+
}
|
|
147
|
+
this._navigateMethod(config)
|
|
148
|
+
}
|
|
149
|
+
_navigateMethod(config) {
|
|
150
|
+
if (PARAMS_ROUTE.includes(config.routeType)) {
|
|
151
|
+
config.routeUrl = this.mixinParam(config.routeUrl, config.params)
|
|
152
|
+
} else {
|
|
153
|
+
config.routeUrl = config.routeUrl && this.addRootPath(config.routeUrl)
|
|
154
|
+
}
|
|
155
|
+
return dispatchNavigate(config)
|
|
156
|
+
}
|
|
157
|
+
// 判断url前面是否有"/",如果没有则加上,否则无法跳转
|
|
158
|
+
addRootPath(url) {
|
|
159
|
+
return url[0] === '/' ? url : `/${url}`
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function createRoute() {
|
|
164
|
+
const context = new Route()
|
|
165
|
+
const instance = Route.prototype.navigate.bind(context)
|
|
166
|
+
// 关键,将Route的实例context上的原型赋值给instance,从而让instance具备Route的原型方法,instance是一个混合函数,既可以作为函数调用,也可以调用类的方法
|
|
167
|
+
Object.setPrototypeOf(instance, context)
|
|
168
|
+
return instance
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export default createRoute()
|
package/src/main.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name" : "",
|
|
3
|
+
"appid" : "",
|
|
4
|
+
"description" : "",
|
|
5
|
+
"versionName" : "1.0.0",
|
|
6
|
+
"versionCode" : "100",
|
|
7
|
+
"transformPx" : false,
|
|
8
|
+
/* 5+App特有相关 */
|
|
9
|
+
"app-plus" : {
|
|
10
|
+
"usingComponents" : true,
|
|
11
|
+
"nvueStyleCompiler" : "uni-app",
|
|
12
|
+
"compilerVersion" : 3,
|
|
13
|
+
"splashscreen" : {
|
|
14
|
+
"alwaysShowBeforeRender" : true,
|
|
15
|
+
"waiting" : true,
|
|
16
|
+
"autoclose" : true,
|
|
17
|
+
"delay" : 0
|
|
18
|
+
},
|
|
19
|
+
/* 模块配置 */
|
|
20
|
+
"modules" : {},
|
|
21
|
+
/* 应用发布信息 */
|
|
22
|
+
"distribute" : {
|
|
23
|
+
/* android打包配置 */
|
|
24
|
+
"android" : {
|
|
25
|
+
"permissions" : [
|
|
26
|
+
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
|
27
|
+
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
|
28
|
+
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
|
29
|
+
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
|
30
|
+
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
|
31
|
+
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
|
32
|
+
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
|
33
|
+
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
|
34
|
+
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
|
35
|
+
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
|
36
|
+
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
|
37
|
+
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
|
38
|
+
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
|
39
|
+
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
|
40
|
+
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
/* ios打包配置 */
|
|
44
|
+
"ios" : {},
|
|
45
|
+
/* SDK配置 */
|
|
46
|
+
"sdkConfigs" : {}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
/* 快应用特有相关 */
|
|
50
|
+
"quickapp" : {},
|
|
51
|
+
/* 小程序特有相关 */
|
|
52
|
+
"mp-weixin" : {
|
|
53
|
+
"appid" : "",
|
|
54
|
+
"setting" : {
|
|
55
|
+
"urlCheck" : false
|
|
56
|
+
},
|
|
57
|
+
"usingComponents" : true
|
|
58
|
+
},
|
|
59
|
+
"mp-alipay" : {
|
|
60
|
+
"usingComponents" : true
|
|
61
|
+
},
|
|
62
|
+
"mp-baidu" : {
|
|
63
|
+
"usingComponents" : true
|
|
64
|
+
},
|
|
65
|
+
"mp-toutiao" : {
|
|
66
|
+
"usingComponents" : true
|
|
67
|
+
},
|
|
68
|
+
"uniStatistics": {
|
|
69
|
+
"enable": false
|
|
70
|
+
},
|
|
71
|
+
"vueVersion" : "3"
|
|
72
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: Wanko
|
|
3
|
+
* @Date: 2023-04-27 17:39:09
|
|
4
|
+
* @LastEditors: Wanko
|
|
5
|
+
* @LastEditTime: 2023-04-27 17:47:43
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<template>
|
|
9
|
+
<view class="bg-f8 h-screen overflow-hidden">
|
|
10
|
+
<view class="m">
|
|
11
|
+
<button class="bg-purple-light">111</button>
|
|
12
|
+
</view>
|
|
13
|
+
</view>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: Wanko
|
|
3
|
+
* @Date: 2023-04-27 17:39:09
|
|
4
|
+
* @LastEditors: Wanko
|
|
5
|
+
* @LastEditTime: 2023-04-27 18:01:51
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<template>
|
|
9
|
+
<view class="bg-f8 h-screen overflow-hidden">
|
|
10
|
+
<view class="m">
|
|
11
|
+
<button class="bg-purple-light" @click="toRoute('/pages/index/two')">route('/pages/index/two')</button>
|
|
12
|
+
</view>
|
|
13
|
+
<view class="m">
|
|
14
|
+
<button class="bg-purple-light" @click="toRoute1('/pages/index/two')">route.to('/pages/index/two')</button>
|
|
15
|
+
</view>
|
|
16
|
+
<view class="m">
|
|
17
|
+
<button class="bg-purple-light" @click="toRoute2('/pages/index/three')">route.direct('/pages/index/three')</button>
|
|
18
|
+
</view>
|
|
19
|
+
<view class="m">
|
|
20
|
+
<button class="bg-purple-light" @click="toRoute3('/pages/index/three')">route.launch('/pages/index/three')</button>
|
|
21
|
+
</view>
|
|
22
|
+
<view class="m">
|
|
23
|
+
<button class="bg-purple-light" @click="toRoute1()">route.to('/pages/index/three')</button>
|
|
24
|
+
</view>
|
|
25
|
+
</view>
|
|
26
|
+
</template>
|
|
27
|
+
<script>
|
|
28
|
+
import route from '@/caring-route/index.js'
|
|
29
|
+
export default {
|
|
30
|
+
methods: {
|
|
31
|
+
// route(url)
|
|
32
|
+
toRoute(url) {
|
|
33
|
+
route(url)
|
|
34
|
+
},
|
|
35
|
+
// route.to(url)
|
|
36
|
+
toRoute1(url) {
|
|
37
|
+
route.to(url)
|
|
38
|
+
},
|
|
39
|
+
toRoute2(url) {
|
|
40
|
+
route.direct(url)
|
|
41
|
+
},
|
|
42
|
+
toRoute3(url) {
|
|
43
|
+
route.launch(url)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: Wanko
|
|
3
|
+
* @Date: 2023-04-27 17:39:09
|
|
4
|
+
* @LastEditors: Wanko
|
|
5
|
+
* @LastEditTime: 2023-04-27 17:47:43
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<template>
|
|
9
|
+
<view class="bg-f8 h-screen overflow-hidden">
|
|
10
|
+
<view class="m">
|
|
11
|
+
<button class="bg-purple-light">111</button>
|
|
12
|
+
</view>
|
|
13
|
+
</view>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: Wanko
|
|
3
|
+
* @Date: 2023-04-27 17:39:09
|
|
4
|
+
* @LastEditors: Wanko
|
|
5
|
+
* @LastEditTime: 2023-04-27 17:53:33
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<template>
|
|
9
|
+
<view class="bg-f8 h-screen overflow-hidden">
|
|
10
|
+
<view class="m">
|
|
11
|
+
<button class="bg-purple-light">route.to</button>
|
|
12
|
+
</view>
|
|
13
|
+
</view>
|
|
14
|
+
</template>
|
package/src/pages.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
|
3
|
+
{
|
|
4
|
+
"path": "pages/index/index",
|
|
5
|
+
"style": {
|
|
6
|
+
"navigationBarTitleText": "一级页面"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"path": "pages/index/two",
|
|
11
|
+
"style": {
|
|
12
|
+
"navigationBarTitleText": "二级页面"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "pages/index/three",
|
|
17
|
+
"style": {
|
|
18
|
+
"navigationBarTitleText": "三级页面"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "pages/index/four",
|
|
23
|
+
"style": {
|
|
24
|
+
"navigationBarTitleText": "四级页面"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"globalStyle": {
|
|
29
|
+
"navigationBarTextStyle": "black",
|
|
30
|
+
"navigationBarTitleText": "uni-app",
|
|
31
|
+
"navigationBarBackgroundColor": "#fff",
|
|
32
|
+
"backgroundColor": "#fff"
|
|
33
|
+
}
|
|
34
|
+
}
|
package/src/uni.scss
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 这里是uni-app内置的常用样式变量
|
|
3
|
+
*
|
|
4
|
+
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
|
5
|
+
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
|
11
|
+
*
|
|
12
|
+
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* 颜色变量 */
|
|
16
|
+
|
|
17
|
+
/* 行为相关颜色 */
|
|
18
|
+
$uni-color-primary: #007aff;
|
|
19
|
+
$uni-color-success: #4cd964;
|
|
20
|
+
$uni-color-warning: #f0ad4e;
|
|
21
|
+
$uni-color-error: #dd524d;
|
|
22
|
+
|
|
23
|
+
/* 文字基本颜色 */
|
|
24
|
+
$uni-text-color:#333;//基本色
|
|
25
|
+
$uni-text-color-inverse:#fff;//反色
|
|
26
|
+
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
|
|
27
|
+
$uni-text-color-placeholder: #808080;
|
|
28
|
+
$uni-text-color-disable:#c0c0c0;
|
|
29
|
+
|
|
30
|
+
/* 背景颜色 */
|
|
31
|
+
$uni-bg-color:#ffffff;
|
|
32
|
+
$uni-bg-color-grey:#f8f8f8;
|
|
33
|
+
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
|
34
|
+
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
|
|
35
|
+
|
|
36
|
+
/* 边框颜色 */
|
|
37
|
+
$uni-border-color:#c8c7cc;
|
|
38
|
+
|
|
39
|
+
/* 尺寸变量 */
|
|
40
|
+
|
|
41
|
+
/* 文字尺寸 */
|
|
42
|
+
$uni-font-size-sm:24rpx;
|
|
43
|
+
$uni-font-size-base:28rpx;
|
|
44
|
+
$uni-font-size-lg:32rpx;
|
|
45
|
+
|
|
46
|
+
/* 图片尺寸 */
|
|
47
|
+
$uni-img-size-sm:40rpx;
|
|
48
|
+
$uni-img-size-base:52rpx;
|
|
49
|
+
$uni-img-size-lg:80rpx;
|
|
50
|
+
|
|
51
|
+
/* Border Radius */
|
|
52
|
+
$uni-border-radius-sm: 4rpx;
|
|
53
|
+
$uni-border-radius-base: 6rpx;
|
|
54
|
+
$uni-border-radius-lg: 12rpx;
|
|
55
|
+
$uni-border-radius-circle: 50%;
|
|
56
|
+
|
|
57
|
+
/* 水平间距 */
|
|
58
|
+
$uni-spacing-row-sm: 10px;
|
|
59
|
+
$uni-spacing-row-base: 20rpx;
|
|
60
|
+
$uni-spacing-row-lg: 30rpx;
|
|
61
|
+
|
|
62
|
+
/* 垂直间距 */
|
|
63
|
+
$uni-spacing-col-sm: 8rpx;
|
|
64
|
+
$uni-spacing-col-base: 16rpx;
|
|
65
|
+
$uni-spacing-col-lg: 24rpx;
|
|
66
|
+
|
|
67
|
+
/* 透明度 */
|
|
68
|
+
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
|
69
|
+
|
|
70
|
+
/* 文章场景相关 */
|
|
71
|
+
$uni-color-title: #2C405A; // 文章标题颜色
|
|
72
|
+
$uni-font-size-title:40rpx;
|
|
73
|
+
$uni-color-subtitle: #555555; // 二级标题颜色
|
|
74
|
+
$uni-font-size-subtitle:36rpx;
|
|
75
|
+
$uni-color-paragraph: #3F536E; // 文章段落颜色
|
|
76
|
+
$uni-font-size-paragraph:30rpx;
|