From 5f2a5bb71fa9e5a8891ca91cf6797ba31b480b3e Mon Sep 17 00:00:00 2001 From: jlzhou <12020042@qq.com> Date: Wed, 17 May 2023 10:11:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=AF=E5=A2=83,=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F,=E8=87=AA=E5=AE=9A=E4=B9=89=E7=BB=84=E4=BB=B6,demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 15 ++- .env.development | 11 +- .env.development.local.copy | 8 +- .env.production | 8 +- package.json | 3 +- pnpm-lock.yaml | 32 +++++- src/env.js | 41 +++++++ src/main.js | 4 +- src/manifest.json | 10 +- src/pages.json | 39 ++++++- src/pages/demo/demo1.vue | 25 +++++ src/pages/index/index.vue | 95 +++++++++------- src/pages/template.vue | 18 +++ src/static/favicon.ico | Bin 0 -> 6647 bytes src/static/logo.png | Bin 4023 -> 18284 bytes src/static/wave.svg | 17 +++ src/uni.scss | 3 + src/w-components/README.md | 1 + src/w-components/mixins/mp-weixin.js | 24 ++++ src/w-components/w-footer/w-footer.vue | 38 +++++++ src/w-components/w-loader/w-loader.vue | 149 +++++++++++++++++++++++++ 21 files changed, 465 insertions(+), 76 deletions(-) create mode 100644 src/env.js create mode 100644 src/pages/demo/demo1.vue create mode 100644 src/pages/template.vue create mode 100644 src/static/favicon.ico create mode 100644 src/static/wave.svg create mode 100644 src/w-components/README.md create mode 100644 src/w-components/mixins/mp-weixin.js create mode 100644 src/w-components/w-footer/w-footer.vue create mode 100644 src/w-components/w-loader/w-loader.vue diff --git a/.env b/.env index 88e1ca2..75f3569 100644 --- a/.env +++ b/.env @@ -15,17 +15,22 @@ ### # 项目标题,建议全局配置 -VITE_TITLE=示例项目 +VITE_APP_TITLE=示例项目 +# 版权信息 +VITE_APP_COPY=Copyright 2023 jlzhou.top Inc. All rights reserved. + +# 首页显示DEMO +VITE_APP_DEMO=0 # 请求后端api的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_API=http://127.0.0.1:8080/ +VITE_APP_BASE_API=http://127.0.0.1:8080/ # 外部资源的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_RESOURCES=http://127.0.0.1:8080/ +VITE_APP_BASE_RESOURCES=http://127.0.0.1:8080/ # WebSocket的基础地址 -VITE_BASE_WS=ws://127.0.0.1:8080/ +VITE_APP_BASE_WS=ws://127.0.0.1:8080/ -VITE_TEST1=全局测试变量 \ No newline at end of file +VITE_APP_TEST1=全局测试变量 diff --git a/.env.development b/.env.development index 12eebb9..d731af0 100644 --- a/.env.development +++ b/.env.development @@ -18,13 +18,16 @@ # 请求后端api的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_API=http://127.0.0.1:8080/ +VITE_APP_BASE_API=http://127.0.0.1:8080/ # 外部资源的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_RESOURCES=http://127.0.0.1:8080/ +VITE_APP_BASE_RESOURCES=http://127.0.0.1:8080/ # WebSocket的基础地址 -VITE_BASE_WS=ws://127.0.0.1:8080/ +VITE_APP_BASE_WS=ws://127.0.0.1:8080/ -VITE_TEST2=测试开发环境变量 \ No newline at end of file +VITE_APP_TEST2=测试开发环境变量 + +# 首页显示DEMO +VITE_APP_DEMO=1 \ No newline at end of file diff --git a/.env.development.local.copy b/.env.development.local.copy index 669e0c3..86ca25d 100644 --- a/.env.development.local.copy +++ b/.env.development.local.copy @@ -17,13 +17,13 @@ # 请求后端api的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_API=http://127.0.0.1:8080/ +VITE_APP_BASE_API=http://127.0.0.1:8080/ # 外部资源的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_RESOURCES=http://127.0.0.1:8080/ +VITE_APP_BASE_RESOURCES=http://127.0.0.1:8080/ # WebSocket的基础地址 -VITE_BASE_WS=ws://127.0.0.1:8080/ +VITE_APP_BASE_WS=ws://127.0.0.1:8080/ -VITE_TEST22=测试本地开发环境变量 \ No newline at end of file +VITE_APP_TEST22=测试本地开发环境变量 \ No newline at end of file diff --git a/.env.production b/.env.production index 53e576c..c560ebd 100644 --- a/.env.production +++ b/.env.production @@ -18,13 +18,13 @@ # 请求后端api的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_API=http://127.0.0.1:8080/ +VITE_APP_BASE_API=http://127.0.0.1:8080/ # 外部资源的基础地址 # 小程序需加入白名单,并设置跨域 -VITE_BASE_RESOURCES=http://127.0.0.1:8080/ +VITE_APP_BASE_RESOURCES=http://127.0.0.1:8080/ # WebSocket的基础地址 -VITE_BASE_WS=ws://127.0.0.1:8080/ +VITE_APP_BASE_WS=ws://127.0.0.1:8080/ -VITE_TEST3=测试生产环境变量 \ No newline at end of file +VITE_APP_TEST3=测试生产环境变量 \ No newline at end of file diff --git a/package.json b/package.json index a2b6bb7..5a45f11 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@dcloudio/uni-cli-shared": "3.0.0-3071120230427001", "@dcloudio/uni-stacktracey": "3.0.0-3071120230427001", "@dcloudio/vite-plugin-uni": "3.0.0-3071120230427001", - "vite": "4.1.4" + "vite": "4.1.4", + "sass": "^1.59.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 496f7cd..85d9959 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,7 @@ specifiers: '@dcloudio/uni-quickapp-webview': 3.0.0-3071120230427001 '@dcloudio/uni-stacktracey': 3.0.0-3071120230427001 '@dcloudio/vite-plugin-uni': 3.0.0-3071120230427001 + sass: 1.59.3 vite: 4.1.4 vue: ^3.2.45 vue-i18n: ^9.1.9 @@ -46,7 +47,8 @@ devDependencies: '@dcloudio/uni-cli-shared': registry.npmmirror.com/@dcloudio/uni-cli-shared/3.0.0-3071120230427001_vue@3.3.2 '@dcloudio/uni-stacktracey': registry.npmmirror.com/@dcloudio/uni-stacktracey/3.0.0-3071120230427001 '@dcloudio/vite-plugin-uni': registry.npmmirror.com/@dcloudio/vite-plugin-uni/3.0.0-3071120230427001_vite@4.1.4+vue@3.3.2 - vite: registry.npmmirror.com/vite/4.1.4 + sass: registry.npmmirror.com/sass/1.59.3 + vite: registry.npmmirror.com/vite/4.1.4_sass@1.59.3 packages: @@ -2084,7 +2086,7 @@ packages: magic-string: registry.npmmirror.com/magic-string/0.27.0 picocolors: registry.npmmirror.com/picocolors/1.0.0 terser: registry.npmmirror.com/terser/5.17.3 - vite: registry.npmmirror.com/vite/4.1.4 + vite: registry.npmmirror.com/vite/4.1.4_sass@1.59.3 transitivePeerDependencies: - postcss - supports-color @@ -3018,7 +3020,7 @@ packages: regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11 systemjs: registry.npmmirror.com/systemjs/6.14.1 terser: registry.npmmirror.com/terser/5.17.3 - vite: registry.npmmirror.com/vite/4.1.4 + vite: registry.npmmirror.com/vite/4.1.4_sass@1.59.3 transitivePeerDependencies: - supports-color dev: true @@ -3036,7 +3038,7 @@ packages: '@babel/core': registry.npmmirror.com/@babel/core/7.21.8 '@babel/plugin-transform-typescript': registry.npmmirror.com/@babel/plugin-transform-typescript/7.21.3_@babel+core@7.21.8 '@vue/babel-plugin-jsx': registry.npmmirror.com/@vue/babel-plugin-jsx/1.1.1_@babel+core@7.21.8 - vite: registry.npmmirror.com/vite/4.1.4 + vite: registry.npmmirror.com/vite/4.1.4_sass@1.59.3 vue: registry.npmmirror.com/vue/3.3.2 transitivePeerDependencies: - supports-color @@ -3052,7 +3054,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: registry.npmmirror.com/vite/4.1.4 + vite: registry.npmmirror.com/vite/4.1.4_sass@1.59.3 vue: registry.npmmirror.com/vue/3.3.2 registry.npmmirror.com/@vue/babel-helper-vue-transform-on/1.0.2: @@ -4106,6 +4108,11 @@ packages: version: 1.2.1 dev: false + registry.npmmirror.com/immutable/4.3.0: + resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/immutable/-/immutable-4.3.0.tgz} + name: immutable + version: 4.3.0 + registry.npmmirror.com/inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz} name: inherits @@ -4929,6 +4936,17 @@ packages: version: 2.1.2 dev: true + registry.npmmirror.com/sass/1.59.3: + resolution: {integrity: sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sass/-/sass-1.59.3.tgz} + name: sass + version: 1.59.3 + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + chokidar: registry.npmmirror.com/chokidar/3.5.3 + immutable: registry.npmmirror.com/immutable/4.3.0 + source-map-js: registry.npmmirror.com/source-map-js/1.0.2 + registry.npmmirror.com/sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz} name: sax @@ -5240,8 +5258,9 @@ packages: engines: {node: '>= 0.8'} dev: true - registry.npmmirror.com/vite/4.1.4: + registry.npmmirror.com/vite/4.1.4_sass@1.59.3: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz} + id: registry.npmmirror.com/vite/4.1.4 name: vite version: 4.1.4 engines: {node: ^14.18.0 || >=16.0.0} @@ -5271,6 +5290,7 @@ packages: postcss: registry.npmmirror.com/postcss/8.4.23 resolve: registry.npmmirror.com/resolve/1.22.2 rollup: registry.npmmirror.com/rollup/3.21.7 + sass: registry.npmmirror.com/sass/1.59.3 optionalDependencies: fsevents: registry.npmmirror.com/fsevents/2.3.2 diff --git a/src/env.js b/src/env.js new file mode 100644 index 0000000..fcb79e9 --- /dev/null +++ b/src/env.js @@ -0,0 +1,41 @@ +/** + * 将环境变量去掉VITE_APP_后,转换成小驼峰命名规则的属性的对象 + * export: env,useEnv + * env: 转换后的环境变量 + * useEnv: vue插件,本质将转换后环境变量绑定:app.config.globalProperties.$env + * @Author : J.L.Zhou + * @EMail : 12020042@qq.com + * @Tel : 151 1104 7708 + * @CreateTime : 2023-05-16 10:44:48 + * @LastEditos : J.L.Zhou + * @LastEditTime : 2023-05-16 10:44:48 + * @Version : 1.0 + * Copyright 2023 jlzhou.top Inc. All rights reserved. + * Warning: this content is only for internal circulation of the company. + * It is forbidden to divulge it or use it for other commercial purposes. + */ + +console.debug("原始的环境变量",import.meta.env); +const env = {}; +let name,value; +for(name in import.meta.env){ + if(!name.startsWith("VITE_APP_")){ + continue; + } + value = import.meta.env[name]; + name = name.substr(9).toLowerCase().split(/_+/); + for (var i = 1; i < name.length; i++) { + name[i]=name[i].substr(0,1).toUpperCase()+name[i].substr(1); + } + name = name.join(""); + env[name] = value; +} +console.debug('转换后的环境变量',env); + +const useEnv = { + install(app){ + app.config.globalProperties.$env=env; + } +} +export {env,useEnv}; + diff --git a/src/main.js b/src/main.js index f4a704a..96432c8 100644 --- a/src/main.js +++ b/src/main.js @@ -2,11 +2,13 @@ import { createSSRApp } from "vue"; import App from "./App.vue"; +import {useEnv} from "./env.js" + -console.debug(import.meta.env); export function createApp() { const app = createSSRApp(App); + app.use(useEnv) return { app, }; diff --git a/src/manifest.json b/src/manifest.json index 309b9ec..9fb4b88 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { - "name" : "", - "appid" : "", + "name" : "示例项目", + "appid" : "__UNI__59B9EAC", "description" : "", "versionName" : "1.0.0", "versionCode" : "100", @@ -50,7 +50,7 @@ "quickapp" : {}, /* 小程序特有相关 */ "mp-weixin" : { - "appid" : "", + "appid" : "wxa02013cebc06dde4", "setting" : { "urlCheck" : false }, @@ -65,8 +65,8 @@ "mp-toutiao" : { "usingComponents" : true }, - "uniStatistics": { - "enable": false + "uniStatistics" : { + "enable" : false }, "vueVersion" : "3" } diff --git a/src/pages.json b/src/pages.json index 1aea851..5ed1cb7 100644 --- a/src/pages.json +++ b/src/pages.json @@ -1,16 +1,43 @@ { + "easycom": { + "custom": { + "^w-(.*)": "@/w-components/w-$1/w-$1.vue" + } + + }, + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { - "path": "pages/index/index", - "style": { - "navigationBarTitleText": "uni-app" - } + "path": "pages/index/index" } ], + "subPackages": [{ + "root": "pages/demo", + "pages": [{ + "path": "demo1" + }] + }], + "preloadRule": { + "pages/index/index": { + "network": "all", + "packages": ["pages/demo"] + } + }, "globalStyle": { + "navigationStyle": "custom", "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", + "navigationBarTitleText": "", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" + }, + "condition": { + //模式配置,仅开发期间生效 + "current": 0, //当前激活的模式(list 的索引项) + "list": [{ + "name": "", //模式名称 + "path": "pages/demo/demo1", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }] } -} + +} \ No newline at end of file diff --git a/src/pages/demo/demo1.vue b/src/pages/demo/demo1.vue new file mode 100644 index 0000000..98a24c3 --- /dev/null +++ b/src/pages/demo/demo1.vue @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 6ea68cd..30fb0ad 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -1,48 +1,63 @@ - - + .demo { + background-color: #0002; + width: 6rem; + margin: 1rem auto 0; + font-size: 1rem; + border-radius: 5rem; + cursor: pointer; + transition: all .5s; + + &:hover, + &:active { + opacity: .7; + } + } + + } + + .wave { + background-color: $w-color-1; + width: 100%; + height: auto; + padding: 0; + margin: 0; + aspect-ratio: 4/1; + } + } + \ No newline at end of file diff --git a/src/pages/template.vue b/src/pages/template.vue new file mode 100644 index 0000000..322fec9 --- /dev/null +++ b/src/pages/template.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/favicon.ico b/src/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..86d7bc6ed96f6b973c210084545d53e57654b24c GIT binary patch literal 6647 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 BrYHaa literal 0 HcmV?d00001 diff --git a/src/static/logo.png b/src/static/logo.png index b5771e209bb677e2ebd5ff766ad5ee11790f305a..bbea6dd2983631e898fe1dee0eece03d41cd5068 100644 GIT binary patch literal 18284 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 literal 4023 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 SYs}WS&%*SCNx89m_ + + + + + + + + + \ No newline at end of file diff --git a/src/uni.scss b/src/uni.scss index 288300d..6be1aa3 100644 --- a/src/uni.scss +++ b/src/uni.scss @@ -12,6 +12,9 @@ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 */ +/* 自定义主体颜色 */ +$w-color-1:#2564a1; +$w-color-2:#2c77bf; /* 颜色变量 */ /* 行为相关颜色 */ diff --git a/src/w-components/README.md b/src/w-components/README.md new file mode 100644 index 0000000..53593c0 --- /dev/null +++ b/src/w-components/README.md @@ -0,0 +1 @@ +# 自定义组件库 diff --git a/src/w-components/mixins/mp-weixin.js b/src/w-components/mixins/mp-weixin.js new file mode 100644 index 0000000..23b9cb9 --- /dev/null +++ b/src/w-components/mixins/mp-weixin.js @@ -0,0 +1,24 @@ +/** + * + * @Author : J.L.Zhou + * @EMail : 12020042@qq.com + * @Tel : 151 1104 7708 + * @CreateTime : 2023-05-16 17:04:05 + * @LastEditos : J.L.Zhou + * @LastEditTime : 2023-05-16 17:04:05 + * @Version : 1.0 + * Copyright 2023 jlzhou.top Inc. All rights reserved. + * Warning: this content is only for internal circulation of the company. + * It is forbidden to divulge it or use it for other commercial purposes. + */ +export default { + // 将自定义节点设置成虚拟的,更加接近Vue组件的表现,可以去掉微信小程序自定义组件多出的最外层标签 + options: { + // #ifdef MP-WEIXIN + multipleSlots: true, //是否启动多slots支持 + styleIsolation: 'shared', //页面式样和组件内式样共享 + addGlobalClass: true, //页面式样是否影响到自定义组件 + virtualHost: true, //将自定义节点设置为虚拟的 + // #endif + } +} \ No newline at end of file diff --git a/src/w-components/w-footer/w-footer.vue b/src/w-components/w-footer/w-footer.vue new file mode 100644 index 0000000..da5125e --- /dev/null +++ b/src/w-components/w-footer/w-footer.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/src/w-components/w-loader/w-loader.vue b/src/w-components/w-loader/w-loader.vue new file mode 100644 index 0000000..9838b15 --- /dev/null +++ b/src/w-components/w-loader/w-loader.vue @@ -0,0 +1,149 @@ + + + + + \ No newline at end of file