微信小程序(一)基本知识初识别
最近微信圈里小程序很火的样子,以前小程序刚开始的时候研究了一下,多日没关注发现一些东西都淡忘了,最后决定还是记录下来的好。
毕竟好记星比不上烂笔头嘛~😆😆
另外有想学习小程序的同学,也可以参考下,当然如果你有H5、CSS3、JS的语言基础,你会发现,它如此简单~😜
文件结构
小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
小程序的主体部分由三个文件组成,当你创建一个项目的时候,他们已经在相应的位置生成好了,他们分别是:
- app.js 这个文件里描写了小程序出生到死亡的经历过程,相当于iOS项目文件中的AppDelegate文件,你懂~
- app.json 这个文件里主要为小程序的一些页面设置提供支持,决定了小程序的呈现模式与debug相关设置,类似target,你懂~
- app.wxss 小程序的wxss相当于H5开发中的css文件,也就是样式表~
对于单个页面则有四个文件组成(当你创建新页面的时候,编辑器默认给你创建这四个文件):
- page.js 页面逻辑处理,相当于controller
- page.json 页面设置,比如导航栏标题等等~
- page.wxss 相当于css样式表
- page.wxml 说白了这个是个xml文件,类似html文件,没啥可说的,就是一些标签不同而已。
需要注意的是不同于使用OC进行的iOS开发,单页面中文件不需要引用即可使用。
动态绑定数据(划重点)
小程序的数据绑定使用 Mustache 语法(双大括号)将变量包起来
<view> {{ message }} </view> Page({ data: { message: 'Hello MINA!' } })
注意:
此中page data 中的message对应的是初始化时的数据(静态占位作用)
动态绑定数据方法:
Page.prototype.setData()
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。
setData() 参数格式
接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。
其中 key 可以非常灵活,以数据路径的形式给出,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义。
注意:
1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致
2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
从公众平台搬来的🌰
1 <!--index.wxml--> 2 <view>{{text}}</view> 3 <button bindtap="changeText"> Change normal data </button> 4 <view>{{num}}</view> 5 <button bindtap="changeNum"> Change normal num </button> 6 <view>{{array[0].text}}</view> 7 <button bindtap="changeItemInArray"> Change Array data </button> 8 <view>{{object.text}}</view> 9 <button bindtap="changeItemInObject"> Change Object data </button> 10 <view>{{newField.text}}</view> 11 <button bindtap="addNewField"> Add new data </button>
1 //index.js 2 Page({ 3 data: { 4 text: 'init data', 5 num: 0, 6 array: [{text: 'init data'}], 7 object: { 8 text: 'init data' 9 } 10 }, 11 changeText: function() { 12 // this.data.text = 'changed data' // bad, it can not work 13 this.setData({ 14 text: 'changed data' 15 }) 16 }, 17 changeNum: function() { 18 this.data.num = 1 19 this.setData({ 20 num: this.data.num 21 }) 22 }, 23 changeItemInArray: function() { 24 // you can use this way to modify a danamic data path 25 this.setData({ 26 'array[0].text':'changed data' 27 }) 28 }, 29 changeItemInObject: function(){ 30 this.setData({ 31 'object.text': 'changed data' 32 }); 33 }, 34 addNewField: function() { 35 this.setData({ 36 'newField.text': 'new data' 37 }) 38 } 39 })
参考文献:微信公众平台