微信小程序开发者微信小程序微信小程序开发

小程序学习笔记-视图层

2018-12-13  本文已影响285人  赵客缦胡缨v吴钩霜雪明

视图层

视图层有wxml何wxss组成
将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

wxml :WXML(WeiXin Markup Language)是框架设计的一套标签语言

一.数据绑定

    // 三目运算
    <view hidden="{{flag ? true : false}}"> Hidden </view>

    // 算术运算
    <view> {{a + b}} + {{c}} + d </view>
    Page({
    data: {
        a: 1,
        b: 2,
        c: 3
    }
    })

    // 逻辑判断
    <view wx:if="{{length > 5}}"> </view>
    // 字符串运算
    <view>{{"hello" + name}}</view>
    Page({
    data:{
        name: 'MINA'
    }
    })

    // 组合运算
    <template is="objectCombine" data="{{for: a, bar: b}}"></template>
    Page({
    data: {
        a: 1,
        b: 2
    }
    })
    // 最终组合成的对象是 {for: 1, bar: 2}

    ......

二.数据渲染

  1. 列表渲染

    • wx.for=”{{ arr }}”, 默认送了两个参数: {{ index }} 和 {{ item }} , 分别为数组元素下标和对应的数组元素
        <view wx:for="{{array}}">
            {{index}}: {{item.message}}
        </view>
    
        Page({
        data: {
            array: [{
            message: 'foo',
            }, {
            message: 'bar'
            }]
        }
        })
    
    • 使用 wx:for-item 可以指定数组当前元素的变量名,使用 wx:for-index 可以指定数组当前下标的变量名:
        <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">
            <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j">
                <view wx:if="{{i <= j}}">
                    {{i}} * {{j}} = {{i * j}}
                </view>
            </view>
        </view>
    
    • block: wx:for, 渲染一个包含多节点的块:
        <block wx:for="{{[1, 2, 3]}}">
            <view> {{index}}: </view  >
            <view> {{item}} </view>
        </block>
    
    • wx:key ??? 取值为 this(指向for循环的item本身,并且item不会变化的),或者string,为循环中对象的键
  2. 条件渲染

    • wx:if=”{{ condition }}”

          <view wx:if="{{condition}}"> True </view>
      
          也可以用 wx:elif 和 wx:else 来添加一个 else 块:
          <view wx:if="{{length > 5}}"> 1 </view>
          <view wx:elif="{{length > 2}}"> 2 </view>
          <view wx:else> 3 </view>
      
    • block: wx: if 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

        <block wx:if="{{true}}">
            <view> view1 </view>
            <view> view2 </view>
        </block>
    
    • wx:if 和 hidden
 1. wx: if是惰性的,只有在if条件改变时才会改变渲染,初始加载耗费性能较小,后续条件改变有更高的消耗,适合运行时条件不大可能会改变的渲染
 2. hidden始终都会保持渲染,只是切换显示和隐藏,初始加载耗费性能较多,后续影响较小,适合频繁切换显示和隐藏

三.模板:

    <!--
        index: int
        msg: string
        time: string
    -->
    <template name="msgItem">
        <view>
            <text> {{index}}: {{msg}} </text>
            <text> Time: {{time}} </text>
        </view>
    </template>
    <template name="odd">
        <view> odd </view>
    </template>
    <template name="even">
        <view> even </view>
    </template>

    <block wx:for="{{[1, 2, 3, 4, 5]}}">
        <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
    </block>

四.事件

    Page({
        tapName: function(event) {
            console.log(event)
        }
    })

五.引用:WXML 提供两种文件引用方式import和include。

    // item.wxml    
    <template name="item">
        <text>{{text}}</text>
    </template>

    // index.wxml  
    <import src="item.wxml"/>
    <template is="item" data="{{text: 'forbar'}}"/>

    // import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件 import 的 template。
    <!-- index.wxml -->
    <include src="header.wxml"/>
    <view> body </view>
    <include src="footer.wxml"/>

    <!-- header.wxml -->
    <view> header </view>

    <!-- footer.wxml -->
    <view> footer </view>

wxss:WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

WXSS 具有 CSS 大部分特性,同时为了更适合开发微信小程序,我们对 CSS 进行了扩充以及修改。与 CSS 相比我们扩展的特性有:
+ 尺寸单位
rpx: 规定屏幕宽度为750rpx,即宽度为375px的屏幕(iphone6)共有750个物理像素,则750rpx = 375px = 750物理像素
+ 样式导入
使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。
内联样式:框架组件上支持使用 style(<view style="color:{{color}};" />)、class(同css3) 属性来控制组件的样式。
+ 全局样式和局部样式: app.wxss 和 page.wxss (后者样式会覆盖前者)

兼容性解决:

JSON:配置文件

js:和其他的一样

上一篇 下一篇

猜你喜欢

热点阅读