前言:
- 整体来说,小程序提供的IDE还是比较好用的,入门也比较简单。模拟器,兼容性都很好。开发效率很高
- 政策原因,金融类小程序不能有交易、购买。但是其他类别不受限制。而且从技术上来说,也是一个新的技能。
- 对一些工具类的app可以起到很好的替代作用!尤其Android下可以生成桌面图标。
- 最新版本已经增加了微信小游戏,集成了一些游戏常用操作框架。
开发平台配置:
- 开发者需要以公司名义申请AppId,比较严格,要提供一系列公司相关资料。
- 个人开发者目前也可以申请,但是个人开发者没有支付权限,不能开发支付功能。
- 名称要起好,有些名称要提交资料审核。
- 除了管理员有所有权限,其他开发人员需要填加权限(20名),体验着需要填加体验者权限(40名)目前政策可能有变化。
- request,upload等接口调用都需要配置白名单,每个最多绑定5个域名;协议必须是https。而且每月只能修改三次。
经验总结:
- 调试集成了chrome调试工具,上手应该都比较快,基本功能都有,很好用。版本都在快速更新中。
- 整个小程序所有分包大小不超过 4M,单个分包/主包大小不能超过 2M。已经比开始的时候好很多了。开始的时候包大小只有1M。。可怜啊,不过这个限制也是为了提高加载速度。
- 导航层级不能超过5级,不然会有问题
- 注意生命周期、wxss的写法问题。
- 数据绑定及setDate方法的使用
- api在快速迭代、丰富中,大家要注意经常查看api文档
- Android真机下报request: fail ssl hand shake error(ssl证书握手错误)服务器需要支持TLS1.2及以上版本
- 性能优化很重要,具体参考官方文档,写的很详细
目录结构
- 每个页面包括四个文件:.js,.json,.wxml,.wxss(推荐都有,不要省略)
- 入口文件app.js,app.json,app.wxss。定义一些全局的方法,数据,样式等。整个项目生命周期中只执行一次
语法与html异同
- js 为对象字面量写法。我们目前都已经推荐这种写法,上手应该很快
- wxml已经跟html完全不同。不支持div等。
- wxss跟css大部分相同,但是不支持一些选择器
app.js 入口程序,初始化生命周期及全局变量、方法等
var RQ = require('util/request.js'); // 引入
App({
onLaunch: function () {
//console.log('App Launch')
},
onShow: function () {
},
onHide: function () {
//console.log('App Hide')
},
globalData: {
host:'https://prefgw.leadfund.com.cn',
imghost:'http://testwww.leadfund.com.cn'
},
publicParam:{
terminal : 'APP',
version : "1.0",
reqTime : "Thu, 22 Dec 2016 06:25:57 GMT",
token: wx.getStorageSync('TOKEN') || "",
custId: wx.getStorageSync('CUSTID') || ""
}
})复制代码
wx.request进行了二次封装,增加功能
/* * @method request, 参数为对象 */
var _encrypts = require('./encrypts.js');
// 对象合并
function jsonJoin(j1, j2) {
var resultObject = {};
for(var attr in j1){
resultObject[attr]=j1[attr];
};
for(var attr in j2){
resultObject[attr]=j2[attr];
}; return resultObject;
};
//对微信提供request进行二次封装
function request(){
var app = getApp();
var param = (Object.prototype.toString.call(arguments[0]) === '[object Object]') ? arguments[0] : console.error('参数必须是对象');
wx.request({
url: app.globalData.host + param.url,
data: {
data:_encrypts.encrypts(JSON.stringify(jsonJoin(app.publicParam, param.data)))
},
header: {
'content-type': 'application/json'
},
success: function(res) {
typeof param.success === "function" ? param.success(res) : console.error('回调需要是function');
},
fail:function(res) {
console.log(res);
typeof param.fail === "function" ? param.fail() : console.error('回调需要是function');
}
}
)}
// 方法导出
module.exports = {
request: request
}复制代码