小程序开发入门教程

八股文背诵
• 阅读 606

数据绑定
微信小程序页面渲染时,框架会将WXML文件同对应的Page的data进行绑定,在页面中我们可以直接使用data的属性,其使用的语法是Mustache语法,也就是使用双大括号将变量或简单的运算规则包裹起来,实现的主要渲染方式有以下几种:

简单绑定
简单绑定就是使用Mustache语法(双大括号)将变量包起来,在模版中直接作为字符串输出使用,可以用于内容、组件属性、控制属性、关键字等输出,其中关键字输出是指将JavaScript中的关键字按照其真值输出。我们还是以之前建立的测试项目为例,新建一个test页面,其test.wxml内容如下:

<!--pages/test/test.wxml-->

<!-- 作为内容直接输出 -->
<view>{{content}}</view>
<!-- 作为属性输出 -->
<view style="border: {{border}}">作为属性渲染</view>
<!-- 关键字 -->
<checkbox checked="{{false}}"></checkbox>
复制代码

test.json内容如下

Page({

    /**
     * 页面的初始数据
     */
    data: {
        content: '作为内容',
        border: 'solid 1px #f00',
        showContent: 'false'
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})
复制代码

最后的运行结果如下

小程序开发入门教程
需要注意的是组件属性为boolean类型时,不要直接写checked=“false”,这样checkde的值是一个“flase”字符串,转换成boolean类型后其代表true,这种应该使用关键字输出checked=“{{false}}”。

运算
在{{}}中不仅可以直接显示数据,还支持一些简单的运算如三元运算、算数运算、判断逻辑、字符串运算。还是以test页面为例,其test.wxml如下

<!--pages/test/test.wxml-->

<!-- 三元表达式 -->
<view>{{showContent ? '显示文本' : '不显示文本'}}</view>
<!-- 算数运算符 -->
<view>{{num1 + num2}} + 1 + {{num3}} = ?</view>
<!--字符串运算 -->
<view>{{"name : " + name}}</view>
<!-- 逻辑判断 -->
<view>{{num3 > 3}}</view>
<!-- 数据路径运算 -->
<view>{{student.age}}{{myArray[0]}}</view>
复制代码

test.js如下

Page({

    /**
     * 页面的初始数据
     */
    data: {
        showContent:false,
        num1 : 1,
        num2 : 2,
        num3 : 3,
        name : 'QStack',
        student : {
            age : 12
        },
        myArray : ['arr1', 'arr2']
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})
复制代码

最终结果如下
小程序开发入门教程

组合
data中数据可以在模版再次组合成新的数据结构,这种组合常常在数组或对象中使用,数组的组合比较简单,对于对象的组合常用于模版中,我们下一篇文章再仔细介绍,数组的组合就是直接将值放置到数组的某个下标下:

<!-- 数组组合-->
<view>{{[myValue, 2, 3, "string"]}}</view>
复制代码
Page({

    /**
     * 页面的初始数据
     */
    data: {
        myValue : 1,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})
复制代码

其最后的结果为

1, 2, 3, string
复制代码

条件渲染
wx:if
除了简单的数据绑定,常常还会使用逻辑分支,通过逻辑分支控制是否渲染该部分,使用

wx:if="{{判断条件}}"判断是否渲染,如果判断条件为真则渲染该代码块,反之则不渲染。

<view wx:if="{{showContent}}" >{{[myValue, 2, 3, "string"]}}</view>
复制代码
Page({

    /**
     * 页面的初始数据
     */
    data: {
        myValue : 1,
        showContent : false
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})
复制代码

如上代码则不会渲染,与此同时WXML也支持使用wx:elif和wx:else,如下

<view wx:if="{{showContent}}" >{{1}}</view>
<view wx:elif="{{showContent}}" >{{2}}</view>
<view wx:else="{{!showContent}}" >{{3}}</view>
复制代码

block wx:if
wx:if是一个控制属性,可以加在任何组件上,但是如果想要控制多个控件但是不想影响布局,则可以使用block:if,block不是一个组件而是一个包装元素,在渲染过程中不做任何渲染,由属性控制。

wx:if与hidden
wx:if是控制是否渲染,hidden是控制是否显示,无论hidden是什么值都会调用渲染线程去渲染组件。hidden适用于状态频繁切换的场景,避免重复渲染影响性能。

列表渲染
组件的wx:for控制属性用于遍历数组,重复渲染组件,在遍历过程中当前项的下标变量默认为index,数组当前项变量名默认为item,如:

<view wx:for="{{myArray}}">{{index}} : {{item}}</view>
复制代码
// pages/test/test.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        myArray : [0, 1, 2],
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})
复制代码

index、item变量名可以通过wx:for-index、wx:for-item属性修改,在普通遍历中没有必要修改index和item,当wx:for嵌套使用时就有必要设置变量名,避免变量名重复,如下面遍历一个二维数组。

<view wx:for="{{myArray}}" wx:for-index="myIndex" wx:for-item="myItem">
    <block wx:for="{{myItem}}" wx:for-index="subIndex" wx:for-item="subItem">
        {{subItem}}
    </block>
</view>
复制代码
// pages/test/test.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        myArray : [
            [1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]
        ]
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
})

最后
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑

如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:http://github.crmeb.net/u/defu不胜感激 !

完整源码下载地址:https://market.cloud.tencent....

PHP学习手册:https://doc.crmeb.com
技术交流论坛:https://q.crmeb.com

点赞
收藏
评论区
推荐文章
CuterCorley CuterCorley
4年前
uni-app入门教程(3)数据绑定、样式绑定和事件处理
@toc前言本文的内容主要包含3部分:声明并渲染变量,包括条件渲染;通过class和style定义样式并动态绑定;事件的绑定,包含了事件传参。三部分均具有动态绑定的特性。一、模板语法及数据绑定1.声明和渲染变量在使用变量前,需要先声明,一般在data块中进行声明,如hellouniapp项目中index.vue中定义的title变
微信小程序部分api 会触发 onShow onHide
解决部分api触发小程序onShowonHide首先要明白微信小程序的onShow()onHide()分为页面级的和应用级的,应用级的就是app.js里面的那几个,页面级的就是pages里的当使用了下列api时,均会触发页面级和应用级的onShowonHide1.点击右上角小圆点关闭小程序。2.图片预览:wx.preview
Dax Dax
3年前
jQuery 的事件绑定和事件委托(事件代理)
简单以jQuery的on()方法为例说明:API:1.on(events,selector,data,handler) 如果on()方法的selector参数为空,事件处理程序就被称为直接绑定。每当在被绑定元素上(如下例中被绑定的document元素,译者注)发生事件时,无论这个事件发生在这个元素上还是从内层元素经冒泡而
Easter79 Easter79
3年前
Vue 入门
Vue.js是构建用户界面的MVVM框架 ,只关注视图层Vue将DOM和数据绑定起来,一旦创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。这样就减少了不必要的DOM操作提高渲染效率,让前端程序员只需要关心业务逻辑不再关心DOM是如何渲染的MVC和MVVM的区别:MVC是后端分层开发概念,MVVM是前端视图层
放学路上 放学路上
3年前
微信小程序事件传参与vue传参的不同
1、vue点击事件传参(day)的写法:2、微信小程序写法(1)事件传参(2)获取参数dayprocess(e)console.log(e.currentTarget.dataset.day)3、总结:微信小程序不支持事件传参,可以通过把参数绑定在元素上,通过currentTarget.dataset获取参数。
马丁路德 马丁路德
4年前
微信小程序 - 路由实践
欢迎来到我博客阅读:1\.前言在微信小程序由一个App()实例,和众多Page()组成。而在小程序中所有页面的路由全部由框架进行管理,框架以栈的形式维护了所有页面,然后提供了以下API来进行路由之间的跳转:1.wx.navigateTo2.wx.redirectTo3.wx.navigateBack4.
Stella981 Stella981
3年前
Centos7中使用iptables,docker容器中实例,外网端口无法访问
因微信小程序需要https的域名访问方式,阿里云无法通过IP和端口绑定域名,只能通过IP进行绑定,故如果不想直接使用443端口,就只能进行端口映射了。这里我使用iptables。由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。停止firewall systemctlstopfire
Stella981 Stella981
3年前
HQChart使用教程63
HQChart使用教程63uniapp使用renderjshqchart序步骤1\.安装依赖模块2\.创建renderjsqhchart模块3\.使用HQChartCtrl对hqchart进行简单的封装4\.page页面创建一个view元素绑定到HQChartCtrl
Stella981 Stella981
3年前
Lightning Web Components html_templates(三)
LightningWebComponents强大之处在于模版系统,使用了虚拟dom进行智能高效的组件渲染。使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据数据绑定我们可以使用{property}绑定组件模版属性到一个组件js类中的属性一个简单的例子组件class
融云IM即时通讯 融云IM即时通讯
7个月前
融云IM干货丨uni-app 在性能上如何优化?
uniapp性能优化可以从以下几个方面进行:使用生产环境构建:确保在部署到生产环境之前,使用Uniapp的生产构建版本,它会进行代码压缩和性能优化。避免不必要的数据绑定:减少使用不必要的双向绑定和计算属性,尽量直接使用props传递数据。虚拟列表渲染:对于