9月22日凌晨,微信公众平台向200个服务号发出“微信小程序”测试邀请。微信表示,“小程序”目前仅处于测试阶段。未来,这类“小程序”的题材会更加广泛。无论是个人、政府、企业、媒体,还是其他组织的开发者,都可以申请注册使用“小程序”。“小程序”发布后,在业界引起了不小的反响。以下是我初步研究的简要总结。开发工具下载目录结构我们在微信提供的开发工具中新建一个项目,开发工具会为我们创建一个基本的目录结构和示例演示代码。结构如下:结构很简单,程序主体部分由app.js、app.json、app.wxss三个文件组成,并且必须放在项目的根目录下。页面由四个文件组成,分别是:Configuration使用app.json文件全局配置微信小程序,确定页面文件路径,窗口性能,设置网络超时时间,设置多个tabs等。每个小程序页面可以同样使用.json文件来配置这个页面的窗口性能。页面的配置比app.json的全局配置要简单的多。它只是在app.json中设置了window配置项的内容,页面中的配置项会覆盖app.json的window中的相同配置项。逻辑层1.注册程序App()函数用于注册一个小程序。接受一个对象参数,指定小程序的生命周期函数等。例子:App({onLaunch:function(){//Dosomethinginitialwhenlaunch.},onShow:function(){//Dosomethingwhenshow.},onHide:function(){//Dosomethingwhenhide.},globalData:'Iamglobaldata'})2.注册页面Page()函数用于注册一个页面。接受一个对象参数,指定页面的初始数据、生命周期函数、事件处理程序等。Page({data:{text:"Thisispagedata."},onLoad:function(options){//Dosomeinitializewhenpageload.},onReady:function(){//Dosomethingwhenpageready.},onShow:function(){//Dosomethingwhenpageshow.},onHide:function(){//Dosomethingwhenpagehide.},onUnload:function(){//Dosomethingwhenpageclose.},onPullDownRefresh:function(){//Dosomethingwhenpulldown},//Eventhandler.viewTap:function(){this.setData({text:'Setsomedataforupdatingview.'})}});3.模块化可以将一些常用的代码抽取出来作为一个模块放到一个单独的js文件中。模块只能通过module.exports或exports暴露接口。需要注意的是:exports是对module.exports的引用,所以随意改变模块中exports的方向会导致未知错误。因此,我们建议开发者使用module.exports来暴露模块接口,除非你已经知道两者之间的关系。小程序目前不支持直接导入node_modules。当开发者需要使用node_modules时,建议将相关代码复制到小程序的目录下。4、API小程序开发框架提供了丰富的微信原生API,可以方便的调用微信提供的能力,如获取用户信息、本地存储、支付功能等。5、ES6转ES5的微信小程序运行在三个终端:iOS、Android和iOS上调试的开发者工具,小程序的javascript代码运行在Android上的JavaScriptCore中,小程序的javascript代码运行在X5内核中,on开发工具,小程序的javascript代码运行在nwjs(chrome)中。虽然这三种运行环境在大多数情况下是相似的,但还是存在一些细微的差别。为了帮助开发者解决这个问题,开发工具会自动帮助开发者将ES6代码转换为ES5代码。对于使用其他构建工具的开发者,可以在项目中关闭该功能,使用自己的构建和转码工具。视图层和我之前对微信小程序的直觉不一样。微信小程序不支持也不兼容HTML,而是微信定义的新规范。其视图文件的后缀为.wxml,是基于xml的扩展名。样式表文件不是CSS,而是.wxss,兼容一些受限制的CSS写法。在渲染视图时,采用了一种类似于单向数据绑定的方式进行数据绑定,WXML中的动态数据来自于对应Page的数据。使用Mustache语法(双花括号)来包装变量:
