zoukankan      html  css  js  c++  java
  • 小程序的语言

    小程序的语言

    一.wxml模板

    1.1关于标签

    1.1.1语法

    <!-- 在此处写注释 -->
    
    <标签名 属性名1="属性值1" 属性名2="属性值2" ...> ...</标签名>
    

    1.1.2特点

    1.标签是闭合的,没有闭合报错

    2.标签的属性

    ​ 特征1:除了特殊的属性,都用key="value"

    ​ 特征2:属性名对大小敏感,class和Class属性不一样

    ​ 例子:

    <image class="userinfo-avatar" src="./image/a.png" ></image>//图片组件
    <!-- view 中包含了 text 标签 -->
    <view>
      <text>hello world</text>
    </view>//文本组件
    

    1.2 dom操作的替代品

    ​ 因为小程序是通过数据驱动视图的原理实现渲染页面,所以wxml模板有数据绑定的功能

    1.2.1文本值的绑定

    <text>当前时间:{{time}}</text>//{{}}
    

    1.2.2属性值的绑定

    <text data-test="{{test}}"> hello world</text>//注意双引号
    

    注意

    1.没有被定义的变量的或者是被设置为 undefined 的变量不会被同步到 wxml 中

    1. 绑定的变量大小写敏感

    1.3逻辑语法

    1.{{}}支持的运算

    三元运算:
        <text>{{ a === 0? 0: 1}}</text>
    
    算数运算
    <view> {{a + b}} </view>
    字符串的拼接
    <view>{{"hello " + name}}</view>
    

    2.if-else判断是否需要渲染代码块

    <view wx:if="{{length > 5}}"> 1 </view>
    <view wx:elif="{{length > 2}}"> 2 </view>
    <view wx:else> 3 </view>
    

    3.循环

    3.1循环语法
    <!-- array 是一个数组 -->
    <view wx:for="{{array}}">
      {{index}}: {{item.message}}//index默认索引,item当前项的变量名
    </view>
    
    3.2循环中的key

    作用:以确保使组件保持自身的状态((如 <input/> 中的输入内容, <switch/> 的选中状态)),并且提高列表渲染时的效率。

    实现:需要绑定唯一值。

    同vue key:保持自身的状态,提高遍历的性能

    1.4.模板 template(可复用组件)

    1.4.1概念

    可以在模板中定义代码片段,然后在不同的地方调用。

    <template name="msgItem">
      <view>
        <text> {{index}}: {{msg}} </text>
        <text> Time: {{time}} </text>
      </view>
    </template>
    

    1.4.2 is 和name属性

    is可以动态决定具体需要渲染哪个模板(动态组件)

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

    name 决定模板的名字,可以被is调用。

    <template name="odd">
      <view> odd</view>
    </template>
    
    
    <template name="even">
      <view> even </view>
    </template>
    
    

    1.5.import和include(利用template)

    1.5.1import

    (1) import 引入的是template

    在 item.wxml 中定义了一个叫 item的 template :

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

    在 index.wxml 中引用了 item.wxml,就可以使用 item模板:

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

    (2) import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件中 import 的 template,简言之就是 import 不具有递归的特性。

    1.5.2include

    (1)include 可以将目标文件中除了 <template/> <wxs/> 外的整个代码引入,相当于是拷贝到 include 位置

    <!-- index.wxml -->
    <include src="header.wxml"/>
    <view> body </view>
    <include src="footer.wxml"/>
    
    <!-- header.wxml -->
    <view> header </view>
    

    1.6标签属性

    属性名 类型 描述 注解
    id String 组件的唯一标识 整个页面唯一
    class String 组件的样式类 在对应的 WXSS 中定义的样式类
    style String 组件的内联样式 可以动态设置的内联样式
    hidden Boolean 组件是否显示 所有组件默认显示
    data-* Any 自定义属性 组件上触发的事件时,会发送给事件处理函数
    bind/catch EventHandler 组件的事件

    二.wxss样式

    2.1概念

    小程序组件的样式描述

    2.2.种类

    2.2.1全局样式

    根目录中的app.wxss为项目公共样式,它会被注入到小程序的每个页面。

    2.2.2页面样式

    与app.json注册过的页面同名且位置同级的WXSS文件。新建项目下的index.wxss

    2.3单位rpx

    小程序编译后,rpx会做一次px换算。rpx根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

    设计稿直接使用rpx,可以用 iPhone6 作为视觉稿的标准

    2.4引用

    @import './test_0.wxss'
    

    2.5目前支持的选择器

    目前支持的选择器:

    id,class,标签,::after>::before

    权重:

    !import>内联(style)>id>class>标签

    权重越高越优先。在优先级相同的情况下,后设置的样式优先级高于先设置的样式。

    2.6使用

    三.小程序的js

    3.1组成

    浏览器:ECMAScript +BOM+DOM

    Node.js:ECMAScript+NPM+Native

    小程序:ECMAScript+框架+API

    3.2模块化

    小程序中可以将任何一个JavaScript 文件作为一个模块,通过module.exports 或者 exports 对外暴露接口。(common.js语法)

    index.js引用common.js

    common.js

    3.3执行顺序

    小程序的执行的入口文件是 app.js 。并且会根据其中 require 的模块顺序决定文件的运行顺序

    当 app.js 执行结束后,小程序会按照开发者在 app.json 中定义的 pages 的顺序,逐一执行,第一个页面就是最先加载的

    3.4作用域

    在文件中声明的变量和函数只在该文件中有效,不同的文件中可以声明相同名字的变量和函数,不会互相影响

    (1)局部变量的定义:

    a.js中定义的变量c就是属于a的局部变量,就算b.js出现变量c跟a.js无关

    (2)全局变量的定义:

    1.通过getApp()的ApI

    // a.js
    // 获取全局变量
    var global = getApp()
    global.globalValue = 'globalValue'
    

    2.在全局js(app.js是第一个先执行,所以可以被其他文件引用)文件中,常用

    // app.js
    App({
      globalData: 1
    })
    

    全局变量的获取:

    // 获取 global 变量
    var app = getApp()
    
    // 修改 global 变量
    app.globalData++  // 执行后 globalData 数值为 2
    

    参考

    [https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/code.html#WXML-模板](

  • 相关阅读:
    微信公众号的开通
    支付宝同步请求检查appid,以及公钥,私钥是否正确
    检查支付宝异步通知是否正确
    支付宝开发者中心添加应用
    js中undefined和null的区别
    判断前端<input>标签是否选中(批量删除时,批量选择复选框)
    P1396 营救+二分+BFS
    P1396 营救+生成树
    P1396 营救+最短路
    P1195 口袋的天空
  • 原文地址:https://www.cnblogs.com/listenMao/p/12872684.html
Copyright © 2011-2022 走看看