小程序的语言

小程序的语言

一.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-模板](

posted @ 2020-05-11 22:25  这样就好了  阅读(385)  评论(0编辑  收藏  举报