关于开发文档阅读说明编程
后文中为了保持简单,经过如下格式来展现上述的代码逻辑,使用第一段注释来代表 WXML 对应的脚本文件中的 data 结构。json
代码清单2-7 展现格式小程序
<!--
{
time: (new Date()).toString()
}
-->
<text>当前时间:{{time}}</text>
小程序由配置代码JSON文件、模板代码 WXML 文件、样式代码 WXSS文件以及逻辑代码 JavaScript文件组成。微信小程序
配置代码JSON文件数组
JSON 语法浏览器
这里说一下小程序里JSON配置的一些注意事项。安全
JSON文件都是被包裹在一个大括号中 {},经过key-value的方式来表达数据。JSON的Key必须包裹在一个双引号中,在实践中,编写 JSON 的时候,忘了给 Key 值加双引号或者是把双引号写成单引号是常见错误。微信
JSON的值只能是如下几种数据格式,其余任何格式都会触发报错,例如 JavaScript 中的 undefined。网络
还须要注意的是 JSON 文件中没法使用注释,试图添加注释将会引起报错。app
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
每个小程序页面也可使用同名 .json 文件来对本页面的窗口表现进行配置,页面中配置项会覆盖 app.json 的 window 中相同的配置项。
模板代码 WXML 文件
<!-- 在此处写注释 -->
<标签名 属性名1="属性值1" 属性名2="属性值2" ...> ...</标签名>
在 Web 开发中,开发者使用 JavaScript 经过Dom 接口来完成界面的实时更新。在小程序中,使用 WXML 语言所提供的数据绑定功能,来完成此项功能。
(1).WXML 经过 {{变量名}} 来绑定 WXML 文件和对应的 JavaScript 文件中的 data 对象属性。
(2). 属性值也能够动态的去改变,有所不一样的是,属性值必须被包裹在双引号中
<text data-test="{{test}}"> hello world</text>
(3). 没有被定义的变量的或者是被设置为 undefined 的变量不会被同步到 wxml 中
(4). 还支持字符串的拼接,{{ }}中还能够直接放置数字、字符串或者是数组
(1). 经过 {{ 变量名 }} 语法可使得 WXML 拥有动态渲染的能力,除此外还能够在 {{ }} 内进行简单的逻辑运算。
(2). WXML 中,使用 wx:if="{{condition}}" 来判断是否须要渲染该代码块:
(3). 若是要一次性判断多个组件标签,可使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。
(1). 在组件上使用 wx:for 控制属性绑定一个数组,便可使用数组中各项的数据重复渲染该组件,默认数组当前项的下标变量名默认为 index,数组当前项的变量名默认为 item
(2). 使用 wx:for-item 指定数组当前元素的变量名,使用 wx:for-index 指定数组当前下标的变量名:
(3). 若是列表中项目的位置会动态改变或者有新的项目添加到列表中,而且但愿列表中的项目保持本身的特征和状态(如 <input/> 中的输入内容, <switch/> 的选中状态),须要使用 wx:key 来指定列表中项目的惟一的标识符。
wx:key 的值以两种形式提供:
当数据改变触发渲染层从新渲染的时候,会校订带有 key 的组件,框架会确保他们被从新排序,而不是从新建立,以确保使组件保持自身的状态,而且提升列表渲染时的效率。
(1).WXML提供模板(template),能够在模板中定义代码片断,而后在不一样的地方调用。使用 name 属性,做为模板的名字。而后在 <template/> 内定义代码片断,
(2). 使用 is 属性,声明须要的使用的模板,而后将模板所须要的 data 传入
(1). WXML 提供两种文件引用方式import和include。
import 能够在该文件中使用目标文件定义的 template
include 能够将目标文件中除了 <template/> <wxs/> 外的整个代码引入,至关因而拷贝到 include 位置
WXSS 样式
(1). 项目公共样式:根目录中的app.wxss为项目公共样式,它会被注入到小程序的每一个页面。
(2). 与app.json注册过的页面同名且位置同级的WXSS文件
其它样式:其它样式能够被项目公共样式和页面样式引用
(3). 在小程序中,咱们依然能够实现样式的引用,样式引用是这样写:
@import './test_0.wxss'
因为WXSS最终会被编译打包到目标文件中,用户只须要下载一次,在使用过程当中不会由于样式的引用而产生多余的文件请求。
JavaScript 脚本
小程序中的 JavaScript 是由ECMAScript 以及小程序框架和小程序 API 来实现的。同浏览器中的JavaScript 相比没有 BOM 以及 DOM 对象,因此相似 JQuery、Zepto这种浏览器类库是没法在小程序中运行起来的,一样的缺乏 Native 模块和NPM包管理的机制,小程序中没法加载原生库,也没法直接使用大部分的 NPM 包。
浏览器中,全部 JavaScript 是在运行在同一个做用域下的,定义的参数或者方法能够被后续加载的脚本访问或者改写。同浏览器不一样,小程序中能够将任何一个JavaScript 文件做为一个模块,经过module.exports 或者 exports 对外暴露接口。
小程序的执行的入口文件是 app.js 。而且会根据其中 require 的模块顺序决定文件的运行顺序
当 app.js 执行结束后,小程序会按照开发者在 app.json 中定义的 pages 的顺序,逐一执行
(1).同浏览器中运行的脚本文件有所不一样,小程序的脚本的做用域同 NodeJS 更为类似。在文件中声明的变量和函数只在该文件中有效,不一样的文件中能够声明相同名字的变量和函数,不会互相影响,
(2).当须要使用全局变量的时,经过使用全局函数 getApp() 获取全局的实例,并设置相关属性值,来达到设置全局变量的目的
(3).须要注意的是,上述示例只有在 a.js 比 b.js 先执行才有效,当须要保证全局的数据能够在任何文件中安全的被使用到,那么能够在 App() 中进行设置