From b8ff07c733bf1cf5b1f172bb717a73623a8bdd38 Mon Sep 17 00:00:00 2001 From: aixianling Date: Thu, 5 Jan 2023 14:33:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + wxmp/README.md | 33 ------------- wxmp/bin/PageBase.js | 41 ++++++++++++++++ wxmp/bin/pages.js | 43 +++++++++++++++++ wxmp/bin/tools.js | 84 +++++++++++++++++++++++++++++++++ wxmp/package.json | 9 +++- wxmp/src/App.vue | 3 -- wxmp/src/main.js | 13 +++-- wxmp/src/pages.json | 16 ------- wxmp/src/pages/home.vue | 23 +++++++++ wxmp/src/pages/index/index.vue | 48 ------------------- wxmp/src/pages/mine.vue | 22 +++++++++ wxmp/src/static/logo.png | Bin 4023 -> 0 bytes wxmp/vite.config.js | 4 +- 14 files changed, 229 insertions(+), 111 deletions(-) create mode 100644 wxmp/bin/PageBase.js create mode 100644 wxmp/bin/pages.js create mode 100644 wxmp/bin/tools.js delete mode 100644 wxmp/src/pages.json create mode 100644 wxmp/src/pages/home.vue delete mode 100644 wxmp/src/pages/index/index.vue create mode 100644 wxmp/src/pages/mine.vue delete mode 100644 wxmp/src/static/logo.png diff --git a/.gitignore b/.gitignore index 48ca5df..9e1ccaa 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ */package-lock.json /server/logs/ /server/run/ +/wxmp/src/pages.json diff --git a/wxmp/README.md b/wxmp/README.md index 370018d..84ea7e3 100644 --- a/wxmp/README.md +++ b/wxmp/README.md @@ -2,36 +2,3 @@ #### 介绍 和老婆的创业项目 - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/wxmp/bin/PageBase.js b/wxmp/bin/PageBase.js new file mode 100644 index 0000000..ad7c600 --- /dev/null +++ b/wxmp/bin/PageBase.js @@ -0,0 +1,41 @@ +class PageBase { + constructor(path, vue) { + this.path = path + this.name = path.replace(/.*[\\\/]([^\\\/]+)$/g, '$1') + this.init(vue) + } + + init(vue) { + if (/customNavigation/.test(vue)) { + this.style = {navigationStyle: "custom"} + } else { + this.style = {navigationBarTitleText: this.label} + //是否开启下拉刷新 + if (/enablePullDownRefresh/.test(vue)) { + this.style.enablePullDownRefresh = true + } + //导航栏标题颜色及状态栏前景颜色,仅支持 black/white + if (/navigationBarTextStyle/.test(vue)) { + this.style.navigationBarTextStyle = vue.replace(/[\s\S]*(navigationBarTextStyle:.+),[\s\S]*/gm, '$1') + } + //导航栏背景颜色(同状态栏背景色) + if (/navigationBarBackgroundColor/.test(vue)) { + this.style.navigationBarBackgroundColor = vue.replace(/[\s\S]*(navigationBarBackgroundColor:.+),[\s\S]*/gm, '$1') + } + // //下拉显示出来的窗口的背景色 + // if (/backgroundColor/.test(vue)) { + // this.style.backgroundColor = vue.replace(/[\s\S]*(backgroundColor:.+),[\s\S]*/gm, '$1') + // } + } + if (/appName/.test(vue)) { + let appName = vue.replace(/[\s\S]*(appName:.+),[\s\S]*/gm, '$1') + this.label = appName.replace(/(appName:|["'])/g, '')?.trim() + } + } + + setLabel(name) { + this.label = name + } +} + +module.exports = PageBase diff --git a/wxmp/bin/pages.js b/wxmp/bin/pages.js new file mode 100644 index 0000000..c52c702 --- /dev/null +++ b/wxmp/bin/pages.js @@ -0,0 +1,43 @@ +const {chalkTag, findPages, fsExtra, fs} = require("./tools"); +const PageBase = require("./PageBase"); +const start = () => { + chalkTag.info('开始生成pages.json...') + let json = { + easycom: { + "^(K|V)(.*)": "@/components/$1$2.vue" + }, + pages: [ + {path: 'pages/home', style: {navigationBarTitleText: "buy-lite"}}, + {path: "pages/mine", style: {navigationBarTitleText: "个人中心"}} + ], + subPackages: [ + {root: "mods/", pages: []}, + {root: "components/pages/", pages: []}, + ], + globalStyle: { + pageOrientation: "auto", + navigationBarTextStyle: "white", + navigationBarBackgroundColor: "#4181FF" + } + } + Promise.all([ + findPages('src/components/pages', file => { + if (/.+\\pages\\[^\\]+\.vue/g.test(file)) { + const app = new PageBase(file.replace(/^src\\components\\pages\\(.*).vue/g, '$1').replace(/\\/g, '/'), fs.readFileSync(file).toString()) + return json.subPackages[1].pages.push(app) + } + }), + findPages('src/mods', file => { + if (/.+\\App[^\\]+\\[^\\]+\.vue/g.test(file)) { + const app = new PageBase(file.replace(/^src\\mods\\(.*).vue/g, '$1').replace(/\\/g, '/'), fs.readFileSync(file).toString()) + return json.subPackages[0].pages.push(app) + } + }), + ]).then(() => { + fsExtra.outputJson('src/pages.json', json, () => { + chalkTag.done('生成pages.json') + }) + }) +} + +start(); diff --git a/wxmp/bin/tools.js b/wxmp/bin/tools.js new file mode 100644 index 0000000..da43c95 --- /dev/null +++ b/wxmp/bin/tools.js @@ -0,0 +1,84 @@ +const fsExtra = require('fs-extra') +const path = require('path') +const chalk = require('chalk') +const fs = require('fs') +/** + * 将函数封装成promise + */ +const promisify = fn => { + return function () { + let args = arguments; + return new Promise(function (resolve, reject) { + [].push.call(args, function (err, result) { + if (err) { + console.log(err) + reject(err); + } else { + resolve(result); + } + }); + fn.apply(null, args); + }); + } +} + +const readdir = promisify(fs.readdir) +const stat = promisify(fs.stat) + +/** + * 封装打印工具 + */ +const {log} = console +const chalkTag = { + info: msg => log([chalk.bgBlue.black(' INFO '), msg].join(' ')), + done: msg => log([chalk.bgGreen.black(' DONE '), msg].join(' ')), + error: msg => log([chalk.bgRed.black(' ERROR '), msg].join(' ')), +} + +/** + * 遍历应用的方法 + */ +const findApp = (dir, cb) => { + fsExtra.ensureDirSync(dir) + return readdir(dir).then(apps => { + return Promise.all(apps.map(e => { + let cPath = path.join(dir, e) + return stat(cPath).then(state => { + if (state.isDirectory()) { + return findApp(cPath, cb) + } else if (state.isFile()) { + cb && cb(dir) + } + }) + }) || []) + }) +} +const findPages = (dir, cb) => { + fsExtra.ensureDirSync(dir) + return readdir(dir).then(apps => { + return Promise.all(apps.map(e => { + let cPath = path.join(dir, e) + return stat(cPath).then(state => { + if (state.isDirectory()) { + return findPages(cPath, cb) + } else if (state.isFile()) { + cb && cb(cPath) + } + }) + }) || []) + }) +} +const copyFiles = (dir, source = 'src/mods') => { + chalkTag.info(`开始扫描${source}...`) + return new Promise(resolve => { + fsExtra.emptyDir(dir, err => { + if (!err) { + fsExtra.copy(source, dir).then(() => { + chalkTag.done(source + ' 扫描完毕') + resolve() + }) + } + }) + }) +} +module.exports = {findApp, chalkTag, fsExtra, copyFiles, fs, path, findPages} diff --git a/wxmp/package.json b/wxmp/package.json index e2c498d..b90c59a 100644 --- a/wxmp/package.json +++ b/wxmp/package.json @@ -3,9 +3,10 @@ "version": "0.0.0", "scripts": { "dev:h5": "uni", - "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-weixin": "npm run pages&&uni -p mp-weixin", "build:h5": "uni build", - "build:mp-weixin": "uni build -p mp-weixin" + "build:mp-weixin": "uni build -p mp-weixin", + "pages": "node bin/pages.js" }, "dependencies": { "@dcloudio/uni-app": "3.0.0-3061420221215001", @@ -29,6 +30,10 @@ "@dcloudio/uni-cli-shared": "3.0.0-3061420221215001", "@dcloudio/uni-stacktracey": "3.0.0-3061420221215001", "@dcloudio/vite-plugin-uni": "3.0.0-3061420221215001", + "chalk": "^4.1.2", + "fs-extra": "^11.1.0", + "path": "^0.12.7", + "sass": "^1.57.1", "vite": "^3.2.4" } } diff --git a/wxmp/src/App.vue b/wxmp/src/App.vue index 52dd89d..23c99f8 100644 --- a/wxmp/src/App.vue +++ b/wxmp/src/App.vue @@ -1,13 +1,10 @@ diff --git a/wxmp/src/main.js b/wxmp/src/main.js index 0f3a925..3889ada 100644 --- a/wxmp/src/main.js +++ b/wxmp/src/main.js @@ -1,10 +1,9 @@ -import { - createSSRApp -} from "vue"; +import {createSSRApp} from "vue"; import App from "./App.vue"; + export function createApp() { - const app = createSSRApp(App); - return { - app, - }; + const app = createSSRApp(App); + return { + app, + }; } diff --git a/wxmp/src/pages.json b/wxmp/src/pages.json deleted file mode 100644 index 692ba11..0000000 --- a/wxmp/src/pages.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pages": [ - { - "path": "pages/index/index", - "style": { - "navigationBarTitleText": "uni-app" - } - } - ], - "globalStyle": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", - "navigationBarBackgroundColor": "#F8F8F8", - "backgroundColor": "#F8F8F8" - } -} diff --git a/wxmp/src/pages/home.vue b/wxmp/src/pages/home.vue new file mode 100644 index 0000000..d9cc990 --- /dev/null +++ b/wxmp/src/pages/home.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/wxmp/src/pages/index/index.vue b/wxmp/src/pages/index/index.vue deleted file mode 100644 index 668ea12..0000000 --- a/wxmp/src/pages/index/index.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - - diff --git a/wxmp/src/pages/mine.vue b/wxmp/src/pages/mine.vue new file mode 100644 index 0000000..bb76364 --- /dev/null +++ b/wxmp/src/pages/mine.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/wxmp/src/static/logo.png b/wxmp/src/static/logo.png deleted file mode 100644 index b5771e209bb677e2ebd5ff766ad5ee11790f305a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4023 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 SYs}WS&%*SCNx89m_