写在最前面
微信小程序自九月份推出内测资格以来,经历了舆论热潮到现在看似冷清,但并不意味着大家不那么关注或者不关注了。我想不管是否有内测资格,只要是感兴趣的开发者已经进入潜心耕耘产品的阶段了,至少是静下心来思考与学习。如果对微信小程序的前途和定位有什么疑惑,可以看看这篇文章http://lib.csdn.net/article/wechat/46742。
下面从字母a开始编号的内容主要作为后续学习与思考后对文章做的更新,包括项目的改进、观点的补充等,所以建议大家先将整篇文章看完再来浏览这部分,会有不一样的收获。
a. 3.1.2节index.js实现火车票查询事件的响应函数getTrainInfo时,直接在函数体中调用wx.request方法开始网络请求。但是后面在阅读了别人的代码后发现,可以将常用的url、apikey、request等常量和方法抽象出来,定义到独立的文件当中。于是在根目录下新建requests目录,其中新建文件request与api文件(js格式),api用来定义网路请求所需的url、apikey等常量信息,request用来定义网络请求方法(可以多种形式)。这样在不同页面中请求不同网络数据时,只要传不同的参数即可,调用的方法是共用的,提高了可读性与维护性。这部分改变已经同步更新到了Github。
b. 3.1.2和3.2.2节都提到了,将JSON格式数据作为url参数传递前,需要先转化为String类型,然后目标页面读取数据时需要将String类型对象转回到JSON格式。如果不想这么复杂,而又只是以学习为目的的话,可以借助app.js中定义的全局变量来承载数据,因为项目的任何地方都可以获取这种变量值。
app中添加相关变量trainList:
1 globalData:{ 2 userInfo:null, 3 trainList:[] //火车票信息列表 4 }index页面获取网络请求返回数据后直接对全局变量赋值:
1 app.globalData.trainList = res.data.data.trainList;
train页面获取:
1 this.setData({ 2 trainList: app.globalData.trainList, 3 });这样就避免了转化的步骤,但是如果是正规大型项目,还是建议采用最合适的处理方式,毕竟全局变量是针对整个项目的。

