微信小程序开发与实践(3)

第四章模块、模块与缓冲

4.1将文章数据从业务中分离

在项目的更目录下新建一个文件夹data,在该文件下新建data.js,将post,js文件中Onload函数下的postList数组的数据整体剪切到data.js文件中,从而避免污染业务层,将所有的内容都堆积在post.js文件中.

4.2小程序的模块

我们还需要使用module.exports向外部暴露一个接口。在data.js文件的最下部添加以下代码:module.exports = { postList:postList}定义好模块后,接下来就可以在其他js文件中引用这个模块。
我们需要在post.js中引入data.js这个模块。
var dataObj = require("../../data/data.js");
代码中的require(path)将模块引入到post.js中,并将模块对象赋值给dataObj。随后在onLoad函数里取出postList数据,并进行数据绑定。

onLoad:function(){
    this.setData({      
    	postList:dataObj.postList    
    })  
}
  • 使用require引用js模块时,要特别注意以下几点:
    (1)被引用的文件一定要带有扩展名js,这一点是不同于页面路径的。
    (2)path路径不可以使用绝对路径,否则会报错。应该使用相对路径。
    (3)在JavaScript文件中声明的变量和函数只在该文件中有效,不同的文件中可以声明相同名字的变量和函数,不会互相影响。
  • 注意为什么是dataObj.postList?因为在输出模块时,我们是将postList作为一个object的属性赋值给module.exports的,所以在require时,得到的也是一个object并非是postList,需要使用dataObj.postList才能获取到真实的文章数据。
    这样的做的好处是,object不仅可以包含postList,你还可以在data.js文件中定义除postList外的其他数据,并作为object的属性一起输出。

4.3小程序的模块化

要使用模板,自然需要先新建模板文件。在/pages/post下新建目录post-item,作为模板文件目录。接着在该目录下新建2个文件:post-item-tpl.wxml和post-item-tpl.wxss。

  • 在post.wxml的顶部使用来引用模板。对于templatePath路径