commit 8b79fc810ff2b4cd22dec21ca1c7a0900d2eaac9 Author: Lmx <1960868911@qq.com> Date: Tue Feb 10 16:55:50 2026 +0800 feat: 初始化微信小程序项目结构 添加了完整的微信小程序基础架构,包括: - 创建app.js、app.json、app.wxss等核心文件 - 配置页面路由和底部tabBar导航 - 添加首页、分类页、个人中心等多个页面模板 - 集成ant-design-mini组件库依赖 - 配置项目编译设置和开发环境 - 添加登录页面及相关的样式和逻辑文件 ``` diff --git a/app.js b/app.js new file mode 100644 index 0000000..1ed57c4 --- /dev/null +++ b/app.js @@ -0,0 +1,19 @@ +// app.js +App({ + onLaunch() { + // 展示本地存储能力 + const logs = wx.getStorageSync('logs') || [] + logs.unshift(Date.now()) + wx.setStorageSync('logs', logs) + + // 登录 + wx.login({ + success: res => { + // 发送 res.code 到后台换取 openId, sessionKey, unionId + } + }) + }, + globalData: { + userInfo: null + } +}) diff --git a/app.json b/app.json new file mode 100644 index 0000000..f9aea1e --- /dev/null +++ b/app.json @@ -0,0 +1,44 @@ +{ + "pages": [ + "pages/login/login", + "pages/index/index", + "pages/category/category", + "pages/mine/mine" + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "底部TabBar示例", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "color": "#dbdbdb", + "selectedColor": "#fff", + "backgroundColor": "#FF9966", + "borderStyle": "black", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "img/tab/home_active.png", + "selectedIconPath": "img/tab/home.png" + }, + { + "pagePath": "pages/category/category", + "text": "分类", + "iconPath": "img/tab/category_active.png", + "selectedIconPath": "img/tab/category.png" + }, + { + "pagePath": "pages/mine/mine", + "text": "我的", + "iconPath": "img/tab/mine_active.png", + "selectedIconPath": "img/tab/mine.png" + } + ] + }, + "style": "v2", + "componentFramework": "glass-easel", + "sitemapLocation": "sitemap.json", + "lazyCodeLoading": "requiredComponents" +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..06c6fc9 --- /dev/null +++ b/app.wxss @@ -0,0 +1,10 @@ +/**app.wxss**/ +.container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 200rpx 0; + box-sizing: border-box; +} diff --git a/img/tab/category.png b/img/tab/category.png new file mode 100644 index 0000000..ec0a3a7 Binary files /dev/null and b/img/tab/category.png differ diff --git a/img/tab/category_active.png b/img/tab/category_active.png new file mode 100644 index 0000000..8b2e178 Binary files /dev/null and b/img/tab/category_active.png differ diff --git a/img/tab/home.png b/img/tab/home.png new file mode 100644 index 0000000..c7fccbf Binary files /dev/null and b/img/tab/home.png differ diff --git a/img/tab/home_active.png b/img/tab/home_active.png new file mode 100644 index 0000000..a3dc550 Binary files /dev/null and b/img/tab/home_active.png differ diff --git a/img/tab/mine.png b/img/tab/mine.png new file mode 100644 index 0000000..4d86cdf Binary files /dev/null and b/img/tab/mine.png differ diff --git a/img/tab/mine_active.png b/img/tab/mine_active.png new file mode 100644 index 0000000..f5aae83 Binary files /dev/null and b/img/tab/mine_active.png differ diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..b3b8d03 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "wxapp", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/ant-design-mini": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ant-design-mini/-/ant-design-mini-0.0.1.tgz", + "integrity": "sha512-pMtB6VUth5FVaSKho/rl7oDTrYl3cuuckDrEkDeTwqdiylfe2nm5OOomWg+oujpl8XV/SCpUOqmRybfBDOjXDg==", + "license": "ISC" + } + } +} diff --git a/node_modules/ant-design-mini/package.json b/node_modules/ant-design-mini/package.json new file mode 100644 index 0000000..4946f61 --- /dev/null +++ b/node_modules/ant-design-mini/package.json @@ -0,0 +1,11 @@ +{ + "name": "ant-design-mini", + "version": "0.0.1", + "description": "ant-design-mini", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "liumin", + "license": "ISC" +} diff --git a/node_modules/ant-design-mini/src/index.js b/node_modules/ant-design-mini/src/index.js new file mode 100644 index 0000000..c9cd42f --- /dev/null +++ b/node_modules/ant-design-mini/src/index.js @@ -0,0 +1 @@ +console.log('hello world') \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e1fba73 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,22 @@ +{ + "name": "wxapp", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wxapp", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "ant-design-mini": "^0.0.1" + } + }, + "node_modules/ant-design-mini": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ant-design-mini/-/ant-design-mini-0.0.1.tgz", + "integrity": "sha512-pMtB6VUth5FVaSKho/rl7oDTrYl3cuuckDrEkDeTwqdiylfe2nm5OOomWg+oujpl8XV/SCpUOqmRybfBDOjXDg==", + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b8a45d4 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "wxapp", + "version": "1.0.0", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "YuLeYuan", + "license": "ISC", + "description": "", + "dependencies": { + "ant-design-mini": "^0.0.1" + } +} diff --git a/pages/category/category.js b/pages/category/category.js new file mode 100644 index 0000000..6d8f94b --- /dev/null +++ b/pages/category/category.js @@ -0,0 +1,66 @@ +// pages/category/category.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/category/category.json b/pages/category/category.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/category/category.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/category/category.wxml b/pages/category/category.wxml new file mode 100644 index 0000000..2cc701d --- /dev/null +++ b/pages/category/category.wxml @@ -0,0 +1,2 @@ + +pages/category/category.wxml \ No newline at end of file diff --git a/pages/category/category.wxss b/pages/category/category.wxss new file mode 100644 index 0000000..7393762 --- /dev/null +++ b/pages/category/category.wxss @@ -0,0 +1 @@ +/* pages/category/category.wxss */ \ No newline at end of file diff --git a/pages/home/home.js b/pages/home/home.js new file mode 100644 index 0000000..0ab33e6 --- /dev/null +++ b/pages/home/home.js @@ -0,0 +1,66 @@ +// pages/home/home.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/home/home.json b/pages/home/home.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/home/home.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/home/home.wxml b/pages/home/home.wxml new file mode 100644 index 0000000..75ba9a7 --- /dev/null +++ b/pages/home/home.wxml @@ -0,0 +1,5 @@ + +pages/home/home.wxml + + + \ No newline at end of file diff --git a/pages/home/home.wxss b/pages/home/home.wxss new file mode 100644 index 0000000..bc0eec7 --- /dev/null +++ b/pages/home/home.wxss @@ -0,0 +1 @@ +/* pages/home/home.wxss */ \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..aadb4bd --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,66 @@ +// pages/index/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..1853ed3 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,2 @@ + +pages/index/index.wxml \ No newline at end of file diff --git a/pages/login/login.js b/pages/login/login.js new file mode 100644 index 0000000..24469ad --- /dev/null +++ b/pages/login/login.js @@ -0,0 +1,66 @@ +// pages/login/login.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/login/login.json b/pages/login/login.json new file mode 100644 index 0000000..e69de29 diff --git a/pages/login/login.wxml b/pages/login/login.wxml new file mode 100644 index 0000000..e984ef8 --- /dev/null +++ b/pages/login/login.wxml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/mine/mine.js b/pages/mine/mine.js new file mode 100644 index 0000000..b736413 --- /dev/null +++ b/pages/mine/mine.js @@ -0,0 +1,66 @@ +// pages/mine/mine.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/mine/mine.json b/pages/mine/mine.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/mine/mine.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/mine/mine.wxml b/pages/mine/mine.wxml new file mode 100644 index 0000000..df5a5a9 --- /dev/null +++ b/pages/mine/mine.wxml @@ -0,0 +1,2 @@ + +pages/mine/mine.wxml \ No newline at end of file diff --git a/pages/mine/mine.wxss b/pages/mine/mine.wxss new file mode 100644 index 0000000..91eea05 --- /dev/null +++ b/pages/mine/mine.wxss @@ -0,0 +1 @@ +/* pages/mine/mine.wxss */ \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..5107dcc --- /dev/null +++ b/project.config.json @@ -0,0 +1,41 @@ +{ + "compileType": "miniprogram", + "libVersion": "trial", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "compileWorklet": false, + "uglifyFileName": false, + "uploadWithSourceMap": true, + "packNpmManually": false, + "minifyWXSS": true, + "minifyWXML": true, + "localPlugins": false, + "condition": false, + "swc": false, + "disableSWC": true, + "disableUseStrict": false, + "useCompilerPlugins": false + }, + "condition": {}, + "editorSetting": { + "tabIndent": "auto", + "tabSize": 2 + }, + "appid": "wx9bfeebe2956c4c5b", + "simulatorPluginLibVersion": {} +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..26411b6 --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,22 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "wxapp", + "setting": { + "compileHotReLoad": true, + "urlCheck": false, + "coverView": true, + "lazyloadPlaceholderEnable": false, + "skylineRenderEnable": false, + "preloadBackgroundData": false, + "autoAudits": false, + "useApiHook": true, + "showShadowRootInWxmlPanel": true, + "useStaticServer": false, + "useLanDebug": false, + "showES6CompileOption": false, + "bigPackageSizeSupport": false, + "checkInvalidKey": true, + "ignoreDevUnusedFiles": true + }, + "libVersion": "3.14.2" +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..764bc2c --- /dev/null +++ b/utils/util.js @@ -0,0 +1,19 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}` +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : `0${n}` +} + +module.exports = { + formatTime +}