本文主要介绍如何从零开始搭建微信小程序并发布的过程。Git项目地址
扫码体验Demo小程序
一、申请账号
根据官方文档和指引填写信息和提交相应的材料,申请拥有自己的小程序账号。
微信开发者工具支持Windows和MacOS,选择对应版本下载安装即可。
三、新建云开发小程序项目
- 打开开发者工具选择新建项目
- AppID在微信公众平台->开发->开发设置中获取
- 后端服务选择小程序·云开发
在开发者工具工具栏左侧,点击“云开发”打开云控制台,并根据提示开通云开发、创建云环境。
五、配置环境
在app.js中使用`wx.cloud.init()`初始化云开发, env为环境ID(开发者工具栏->云开发->设置->环境设置->环境ID)
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
env: 'test-develop-il4iu',
traceUser: true
})
}
}
})
六、创建首页
- 在miniprogram->pages文件夹下新建index文件夹,再在index文件夹上右键选择新建Page,输入index,则得到index.js(js)、index.json(页面配置)、index.wxml(html)、index.wxss(css)四个文件。
- 在app.json中加入index路径(
pages/index/index
) - 代码详见Git
- 本项目已下好对应的组件,如需其它的请在该 组件地址 下载
七、创建添加用户信息云函数
- 在cloudfunctions文件夹右键选择
新建Node.js云函数
,输入addUser - 在cloudfunctions文件夹右键选择
新建Node.js云函数
,common - 在cloudfunctions文件夹右键选择
新建Node.js云函数
,输入modelFunc - 在三个云函数目录(addUser,common, modelFunc)下执行依赖
npm install --save wx-server-sdk@latest
, 每次新建云函数后都要在对应目录下执行 - 云函数之间使用async awit方式同步调用,云函数不能用require文件方式直接调用方法,要用
cloud.callFunction
- 获取北京时间的方法为
当前时间 + (格林威治时间和本地时间之间的时差) - 时差
, 即getTime() + getTimezoneOffset() * 60 * 1000 - (-8 * 60 * 60 * 1000)
- 数据库插入记录用
db.collection('user').add()
, 更新记录用db.collection('user').doc(userId).update()
- 代码详见Git
八、本地云函数调试
- 选择云开发环境,右击cloudfunctions选择当前环境为你创建的云开发环境。
- 开启云函数本地调试,右击cloudfunctions选择开启云函数本地调试,选择云函数(如addUser), 点击开启本地调试。备注:
在本地运行时如果云函数还没有上传到服务器时,则所有云函数都要开启本地调试才能访问到数据
- 编译小程序,回到开发者工具,在开发者工具栏中选择爬虫(编译)按钮编译。
九、云函数上传云服务器
- 将cloudfunctions文件夹的所有云函数依次右击选择上传云端并部署:云端部署依赖。
一定要一个个的慢慢传,一个传完了再上传下一个
- 上传代码,在开发者工具栏中选择上传。
十、发布上线小程序
- 提交审核,微信公众管理后台->管理->版本管理->开发版本->提交审核
- 发布,审核通过后再审核版本中点击发布
十一、数据库表结构
user表
字段 | 类型 | 名称 | 举例 |
---|---|---|---|
_id | string | id(自动生成) | 9832423jdd34o232o423 |
openid | string | 用户唯一标志 | oiouwiwqe1231dadsdas |
username | string | 用户名 | zhangsan |
create_at | string | 创建时间 | 2020-05-10 11:00:00 |
update_at | string | 更新时间 | 2020-05-10 11:00:00 |
{
"_id":"9832423jdd34o232o423",
"openid":"haksdasodasda89819283120312",
"username":"zhangsan",
"create_at":"2020-05-10 16:32:13",
"update_at":"2020-05-10 16:32:13"
}
subject表
字段 | 类型 | 名称 | 举例 |
---|---|---|---|
_id | string | id(自动生成) | 9832423jdd34o232o423 |
question | string | 问题 | 烧一根不均匀的绳要用一个小时,如何用它来判断半个小时? |
option | array | 选项 | - |
- key | string | 选项 Key | A |
- value | string | 选项值 | 从中间开始烧 |
answer | string | 答案 | C |
analysis | string | 解析 | 两头一起烧,烧完就是半小时 |
position | number | 位置,用来排序 | 1 |
status | string | 状态(1-发布,0-未发布) | 1 |
create_at | string | 创建时间 | 2020-05-10 11:00:00 |
update_at | string | 更新时间 | 2020-05-10 11:00:00 |
{
"question":"一个男科学家回忆说:他和他的爱人去南极考察,但是他中途中了雪盲,什么都看不到。所以他们在南极游荡,最后只能生吃企鹅来维持生命。但是他爱人最后还是没有挺住,最后死了。他一个人继续走了一天,最后被救了回去。第二年他特意去企鹅店吃企鹅,为了纪念他的妻子,但是回来后竟然自杀了。为什么?",
"option":[{"key":"A","value":"知道答案"},{"key":"B","value":"不知道答案"}],
"answer":"A",
"analysis":"味道不一样,知道在南极吃的是他爱人的肉",
"status":"1",
"position":27,
"create_at":"2020-05-07 15:46:36",
"update_at":"2020-05-07 15:46:36"
}
record表
字段 | 类型 | 名称 | 举例 |
---|---|---|---|
_id | string | id(自动生成) | 9832423jdd34o232o423 |
user_id | string | user表_id | oiouwiwqe1231dadsdas |
answer_fail | array | 失败的subject表_id | ["2f826e24"] |
answer_success | array | 成功的subject表_id | ["2f826e24"] |
create_at | string | 创建时间 | 2020-05-10 11:00:00 |
update_at | string | 更新时间 | 2020-05-10 11:00:00 |
{
"_id":"05f2c36f5eb8b748008593f308ae5027",
"user_id":"5e847ab25eb8b730009716265940755f",
"answer_success":["2NqPCHgKe4Gej83LAK6tDq44OCGrQhgzFSGrU4ItYJqi1zlB"],
"answer_fail":["2NqPCHgKe4Gej83LAK6tDq44OCGrQhgzFSGrU4ItYJqi1zlB"],
"create_at":"2020-05-11 10:24:08",
"update_at":"2020-05-11 10:24:21"
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。