目前,微信小程序越来越流行,而且功能越来越强大,在性能方面也越做越好。因为能够原生调用小程序提供的组件和 API ,小程序的开发快捷,使用方便,越来越多的产品会落地到微信小程序上。但传统的微信小程序开发,和普通的H5页面开发或者原生APP开发相比,只是改变了前端部分的开发方式,,还是离不开厚重的后台开发。
现在的小程序,在后台服务方面,正在往 serverless 趋势方向发力。小程序提供了云厂商的无服务器函数 SCF,使得小程序无需搭建一个后台服务即可运行。
该文章主要是介绍如何利用腾讯云提供的服务来开发微信小程序。微信小程序的开发教程:https://developers.weixin.qq.com/miniprogram/dev/ ,该文章不再详细叙述。现在我们就马上进入如何结合腾讯云提供的服务进行开发。
一、 下载并运行配置最新小程序开发IDE
下载地址:http://git.code.oa.com/mp-public/cloud-doc/
打开IDE,选择小程序项目,分别填入项目目录,AppID(没有的话,先去注册,注册流程可看官网教程),项目名称,即可打开项目。
由界面可以看到,打开项目后,程序会自动编译运行,在左侧的页面可以预览效果。
下面,我们来重点说一下编译、远程调试、和云控制台的用法。
1. 编译
一般情况下,只要代码发生变动,程序会自动执行编译。我们可以手动点击“编译”来执行编译。
编译成功后,页面会自动加载渲染。
2. 远程调试
远程调试,是用于真机调试的最直接的一种方式。点击远程调试,视图会弹出二维码,用手机微信打开扫一扫,扫描二维码即可进入小程序的开发版。
通过 IDE 远程调试打开的小程序,可以在 IDE 上获取控制面板 Console / Network / Sources 等信息,方便开发者去调试代码和功能。
手机预览的小程序开发版,默认手机上是关闭调试模式的。如果需要打开调试模式,可以在小程序设置上,选择打开调试,重启小程序即可进入调试模式。
3. 云控制台
云控制台是开发者管理小程序云的地方。
概要:
开发者在初始开发前,需要创建一个环境(目前,每个小程序账号可免费创建两个环境),如上图,我创建了一个叫 “development” 的环境。记住环境 ID ,它的值需要被写进配置文件。
数据库:
在数据库页面,开发者可以看到当前环境下的所有数据信息,并提供了对集合和文档的操作入口。
文件管理:
在文件管理页面,开发者可以对文件进行管理,包括上传、查看、重命名、移动、创建文件夹等。
开发者可以通过两种方式上传文件:
- 可以直接在云控制台的图形化界面手动上传或下载文件,文件的网络路径可以在文件详情中得到。
- 通过编写代码,调用小程序云的API控制文件的上传(wx.cloud.uploadFile)和下载(wx.cloud.downloadFile),在后续会详细介绍。
云函数:
在云函数页面,开发者可以查看已有的云函数列表,提供了新建、编辑、测试云函数的入口。
云函数的作用,可以由开发者直接在小程序内部通过 API (wx.cloud.callFunction) 被调用。但云函数的执行,并不是在小程序内部,而是在小程序云上执行,目前已经支持node环境了,因此作为前端开发者,可以通过node 云函数来实现一些原本是后台的服务和功能。
二、 项目开发
1. 目录结构
我们先看一般小程序的目录结构,可以如下:
project.config.json是项目的主配置文件(下一节会详细介绍)。
client 文件夹是小程序项目页面的文件,最终会被编译打包运行在小程序里。主要的文件类型有4种:
代码语言:javascript复制 .json 后缀的 JSON 配置文件
.wxml 后缀的 WXML 模板文件
.wxss 后缀的 WXSS 样式文件
.js 后缀的 JS 脚本逻辑文件
其中,app.js是APP的入口文件,app.json是APP的配置文件,pages文件夹是存放小程序页面的文件夹(具体的代码构成,可以参考
https://developers.weixin.qq.com/miniprogram/dev/quickstart/basic/file.html)。
cloud-functions,是存放云函数的文件夹。最终云函数将会被打包上传至小程序云进行构建。
2. 项目初始化和配置
这里只列出与小程序云相关的主要配置(其他配置相对容易明白,看小程序开发文档即可):
project.config.json
client/app.js
小程序APP需要执行 wx.cloud.init 方法,才能够初始化小程序云。只有初始化成功之后,后续才能调用小程序相关的 API 。参数env字段的值,就是对应 1.3 节的环境变量, traceUser表示是否跟踪用户的操作记录,调试阶段一般建议打开。
3. 调用API上传文件至小程序云
通过调用 wx.cloud.init 进行初始化后,便可使用wx.cloud 的API。这里以上传文件至小程序云为例,介绍 API 的使用。
代码语言:javascript复制wx.cloud.uploadFile({
cloudPath: '/example.png',
filePath: '', // 小程序临时文件路径
success: res => {
console.log(res.fileID)
},
fail: err => {
}
})
其中,cloudPath 为上传至小程序云文件目录的路径。可以指定文件夹,如:“/user/xxx.file”等等。
4. 编写云函数
首先,打开云控制台,切换至云函数的界面,会看到云函数列表。
选择“新建云函数”,进入新建云函数的页面,填写云函数名、创建方式和运行环境,即可完成创建。
创建完云函数之后,通过云目录进入具体的函数详情页,点击右上角的“编辑”,即可提交云函数。
提交云函数一共有两种方法:
一种是通过微信开发者工具上传,上传指引如下:
- 请先配置云函数的根目录(如已配置请忽略此步骤)
- 在项目一级目录下新建文件夹,命名为cloud-functions。
- 在项目文件project.config.json 里增加字段 "cloudfunctionRoot": "./cloud-functions"。
- 在微信开发者工具中重新载入项目,即可看到带有云标记的云函数目录。
- 在微信开发者工具中,右击云函数目录,选择‘新建Node.js云函数’。
- 对新建的 Node.js 云函数目录右击选择‘上传’,即可同步至云端。
第二种办法是,通过本地上传ZIP包。
如上图,压缩打包该云函数的代码,即可上传。注意红色框的执行方法,表明了云函数的入口文件是index.js,并且该函数必须暴露main_handler的方法。
// index.js
把该文件直接打包进一个zip包就行,如果该index.js函数还依赖于其他的包或module,只需要把这些包或module按照依赖关系一起打包进 zip 包即可。
打包完成后,即可上传。
5. 调用云函数
小程序可以通过端 API 来直接调用云函数,wx.cloud.callFunction(OBJECT);
代码语言:javascript复制wx.cloud.callFunction({
// 要调用的云函数名称
name: 'test',
// 传递给云函数的参数
data: {
param: 1,
},
success: res => {
// output: res.result
},
fail: err => {
}
})
通过该 API ,可以非常方便地调用云函数。