前言
张小龙在朋友圈里这样解释到:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用,也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
老师帮助申请了一个小程序,接下来,小编决定利用小程序做一个应用。有以下五个想法:
1、公交查询系统
2、餐厅排号系统
3、餐厅点餐系统
4、书籍借阅交易系统
5、小范围问答系统
无论做哪个,都需要对腾讯提供的小程序API进行一个较全面的了解,本文就记录一下学习过程中的重点。
项目结构
使用微信开发者工具,新建小程序项目,生成一些初始文件,结构如下。
文件 | 必填 | 作用 |
---|---|---|
app.js | 是 | 小程序逻辑 |
app.json | 是 | 小程序公共设置 |
app.wxss | 否 | 小程序公共样式表 |
| 文件类型 | 必填 | 作用 |
| js | 是 | 页面逻辑 |
| wxml | 是 | 页面结构 |
| wxss | 否 | 页面样式表 |
| json | 否 | 页面配置 |
app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
以下是一个包含了所有配置选项的简单配置app.json :
1 | { |
加载过程
由上图可以看出,加载过程为:
1、app.js中的onLaunch和onShow函数被调用。
2、按照app.json中的配置,注册pages参数中的页面。
3、按照app.json中的配置,跳转到pages参数中的第一个页面(index页面)。
4、index.js中的onLoad和onShow函数被调用。
5、使用index.js的data初始化页面。
6、index.js中onReady函数被调用。
逻辑层
注册程序
App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。
object参数说明:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onLaunch | Function | 生命周期函数–监听小程序初始化 | 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) |
onShow | Function | 生命周期函数–监听小程序显示 | 当小程序启动,或从后台进入前台显示,会触发onShow |
onHide | Function | 生命周期函数–监听小程序隐藏 | 当小程序从前台进入后台,会触发 onHide |
其他 | Any | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问 |
注册页面
Page() 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。
object 参数说明:
属性 | 类型 | 描述 |
---|---|---|
data | Object | 页面的初始数据 |
onLoad | Function | 生命周期函数–监听页面加载 |
onReady | Function | 生命周期函数–监听页面初次渲染完成 |
onShow | Function | 生命周期函数–监听页面显示 |
onHide | Function | 生命周期函数–监听页面隐藏 |
onUnload | Function | 生命周期函数–监听页面卸载 |
onPullDownRefresh | Function | 页面相关事件处理函数–监听用户下拉动作 |
onReachBottom | Function | 页面上拉触底事件的处理函数 |
其他 | Any | 开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问 |
详见小程序文档
模块化
我们可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。
需要注意的是:
- exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误。所以我们更推荐开发者采用 module.exports 来暴露模块接口,除非你已经清晰知道这两者的关系。
- 小程序目前不支持直接引入 node_modules , 开发者需要使用到 node_modules 时候建议拷贝出相关的代码到小程序的目录中。
1 | // common.js |
在需要使用这些模块的文件中,使用 require(path) 将公共代码引入。
1 | var = ('../../modules/common/common.js'); |
API
小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。
详细介绍请参考API 文档
视图层
WXML
1 | /*home.js*/ |
WXSS
当成css使用就好。
组件
后记
小程序利弊各半,是否使用还是要看需求。
利:
- 不用安装,即开即用,用完就走。
- 省流量,省安装时间。
- 相较于原生应用,开发成本更低。
- 推广更容易更简单,更省成本。
弊:
- 寄生于微信,网页没有可移植性。
- 无法取代休闲娱乐办公类原生应用。
最后,引用iH5互动大师创始人孟智平的一段话:
真正的小程序的形式只能是H5。最轻(不用下载安装,用了就走)、最灵活(开发难度小,投放周期短,调整更容易)、最通用(标准的Web形态,有浏览器就能打开)。
书签
简易教程-小程序
https://mp.weixin.qq.com/debug/wxadoc/dev/index.html
微信小程序全方位深度解析-课程学习-百度传课
http://www.chuanke.com/v4702151-193232-1107660.html
为什么我反对微信小程序?
https://www.huxiu.com/article/171880/1.html?f=myzakercom
我们真的需要网页版App吗?Google PWA的困局
http://www.leiphone.com/news/201606/UEiart497WUzS62u.html