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
+}