微信小程序MINA框架之模板语法(一)


微信模板语法和vue有点相似,但是也有所不同,在vue中涉及到运算或者数据绑定,都是采用v-bind来实现,但是在微信中,不使用也是完全可以的,比较的灵活。之前如果有vue学习经验的,上手会很快。

1. 数据绑定

数据绑定普通写法如下:

  • 首先需要在页面对应的json文件中定义初始化数据
Page({
    data: {
        name:"itcrud",
        id:1,
        isChecked:false,
        isGirl:false,
        a:1,
        b:2,
        c:3
    }
})
  • wxml文件中写html代码,做数据绑定操作,使用双花括号,里面写上对应的变量名称即可
<view>{{num}}</view>
  • 如果是标签的属性赋值,可以采用下面的方式,第一种直接用变量,第二种也可以做字符串的拼接
<view id="{{id}}"></view>
<view id="item-{{id}}"></view>
  • 上面两种可以是数值,也可以是字符串,当然布尔类型也是同样支持
<checkbox checked={{isChecked}}></checkbox>
  • 上面都是普通的写法,直接获取值即可,其实其中还可以做相应的运算,如下:
<!-- 三元表达式 -->
<view>性别是:{{isGirl?"女":"男"}}</view>
<!-- 算数运算,结果是:33 -->
<view>{{a+b}}+c</view>
<!-- 逻辑判断,同样逻辑判断和算数运算也是可以想结合的 -->
<view>{{a>0}}</view>
<view>{{(a+b)>0 ? "大于0":"小于等于0"}}</view>
<!-- 上面都是数值运算,对于字符串的拼接也是同样的支持 -->
<view>{{{"hello "+name}}</view>

注意:在属性写法的时候花括号和双引号之间不能出现空格,否则会被认为是字符串,错误演示如下:

<!-- 在第一个花括号和双引号间有一个空格,这个时候,false就会被认为是字符串,不会最为布尔值生效 -->
<checkbox checked=" {{false}}"></checkbox>

2. 列表渲染

这个很重要,使用很广,最常用的就是列表数据渲染。使用如下:

  • 定义列表数据
Page({
    data:{
        list:[
            {
                id:1,
                name:"张三",
                age:24,
                height:175
            },{
                id:2,
                name:"李四",
                age:26,
                height:174
            },{
                id:3,
                name:"王五",
                age:30,
                height:179
            }
        ]
    }
})
  • 页面使用列表渲染的代码
<view wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="id">
    用户ID:{{item.id}}-
    用户名:{{item.name}}-
    用户年龄:{{item.age}}-
    用户身高:{{item.height}}
</view>
  • 循环的结果如下:
用户ID:1-用户名:张三-用户年龄:24-用户身高:175
用户ID:2-用户名:李四-用户年龄:26-用户身高:174
用户ID:3-用户名:王五-用户年龄:30-用户身高:179

说明:

  1. wx:for-item的默认值就是item,这里可以省略wx:for-item="item"不写,同时wx:for-index="index"也可以不写,默认值是index,但是出现多层嵌套,需要做上标识,便于区分。
  2. 对于wx:key是可以不加的,框架推荐加上,可以提高性能。如果使用过vue的会知道,其中也是有一个:key,其目的都是相同的。
  3. 如果循环的list是一个数组,里面都是单值元素,非对象且唯一,如[1,2,3,4],元素不重复,则wx:key的值就使用*this,完整写法就是wx:key="*this",表示是当前元素

3. 条件渲染

条件渲染有两种,一种是直接用if、elif、else的方式,一种是通过标签本身所带的hidden属性。

3.1 if、elif、else方式

<view wx:if="{{x>100}}">大于100</view>
<view wx:elif="{{x>50}}">大于50</view>
<view wx:elif="{{x>30}}">大于30</view>
<view wx:else>小于等于30</view>

如果x是大于100的,在页面上最终渲染的标签就一个,其他三个标签会被剔除。假设这里的x值是频繁的变化,那么就可能会导致标签的频繁被删除和添加。

3.2 hidden方式

<view hidden="{{x>100}}">大于100</view>
<view hidden="{{x>50}}">大于50</view>
<view hidden="{{x>30}}">大于30</view>

不管x的值为多少,页面最终渲染三个标签都会存在,只是其中两个被隐藏,如果x值频繁的变化,本身标签不会发生删除和添加,只是标签的属性发生了变化。

综合说明:如果x的值不频繁变化,使用if、elif、else更好,减少页面的大小,提高传输效率;反之,就选择hidden属性方式,减少性能的消耗


文章作者: 程序猿洞晓
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 程序猿洞晓 !
评论
 上一篇
微信小程序MINA框架之事件绑定(二) 微信小程序MINA框架之事件绑定(二)
微信小程序事件绑定其实很简单,但是这里需要单独的拿出来说,主要里面涉及到如何获取数据,以及了解小程序中事件绑定的当前对象里面两个主要属性数据。
下一篇 
微信小程序MINA框架学习(零) 微信小程序MINA框架学习(零)
微信小程序的自带开发框架就是MINA,虽然市场中还有很多小程序的开发框架,但是考虑入门,还是以微信小程序自带的MINA框架为入口,开启微信小程序开发学习的旅程。这系列的博客旨在学习笔记的记录,一方面是加深自己的记忆,另一方面就是后期自己看着方便。
  目录