微信小程序(一)基本知识初识别

最近微信圈里小程序很火的样子,以前小程序刚开始的时候研究了一下,多日没关注发现一些东西都淡忘了,最后决定还是记录下来的好。   

毕竟好记星比不上烂笔头嘛~😆😆

另外有想学习小程序的同学,也可以参考下,当然如果你有H5、CSS3、JS的语言基础,你会发现,它如此简单~😜


 文件结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。

小程序的主体部分由三个文件组成,当你创建一个项目的时候,他们已经在相应的位置生成好了,他们分别是:

  1. app.js     这个文件里描写了小程序出生到死亡的经历过程,相当于iOS项目文件中的AppDelegate文件,你懂~
  2. app.json  这个文件里主要为小程序的一些页面设置提供支持,决定了小程序的呈现模式与debug相关设置,类似target,你懂~
  3. app.wxss 小程序的wxss相当于H5开发中的css文件,也就是样式表~

对于单个页面则有四个文件组成(当你创建新页面的时候,编辑器默认给你创建这四个文件):

  1. page.js        页面逻辑处理,相当于controller
  2. page.json     页面设置,比如导航栏标题等等~
  3. page.wxss    相当于css样式表
  4. 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 })

 

参考文献:微信公众平台

posted @ 2017-07-28 14:54  抠得儿  阅读(966)  评论(0编辑  收藏  举报