项目结构
1 | - page |
四类文档:
- .json:配置文件
- .wxml:模板文件
- .wxss:样式文件
- .js: js文件
配置文件
全局配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33{
"pages": [
"pages/index/index",
"pages/logs/index"
],
"window": {
"backgroundTextStyle": "light", //下拉 loading 的样式,仅支持 dark / light
"navigationBarBackgroundColor": "#fff", //导航栏背景颜色
"navigationBarTitleText": "Demo", //导航栏标题文字内容
"navigationBarTextStyle": "black", //导航栏标题颜色,仅支持 black / white
"enablePullDownRefresh": true, //是否全局开启下拉刷新
"backgroundColor": "#000" //页面上拉触底事件触发时距页面底部距离,单位为px
},
"tabBar": {
"color":"#00ff00", //字体颜色;
"selectedColor": "#ff0000", //选中tab字体颜色;
"backgroundColor": "yellow", //tab背景颜色;
"borderStyle": "black", //tab边框,只能为black和white;
"position":"bottom", //tabBar位置;
"list": [{ //只能配置最少2个、最多5个 tab
"pagePath": "pages/index/index",
"text": "首页"
}, {
"pagePath": "pages/logs/logs",
"text": "日志"
}]
},
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
},
"debug": true
}页面配置
1
2
3
4
5
6
7
8
9
10
11
12{
"navigationBarBackgroundColor": "#fff”, //导航栏背景颜色
"navigationBarTitleText": "WeChat”, //导航栏标题文字内容
"navigationBarTextStyle":"black”, //导航栏标题颜色,仅支持 black / white
"backgroundTextStyle":"light”, //下拉 loading 的样式,仅支持 dark / light
"backgroundColor": "#ffffff", //窗口的背景色
"enablePullDownRefresh": false, //是否开启下拉刷新。
"onReachBottomDistance”: 50, //页面上拉触底事件触发时距页面底部距离,单位为px
//只在页面配置中有效,无法在 app.json 中设置
"disableScroll": false, //设置为 true 则页面整体不能上下滚动;
}
逻辑层
注册小程序
App(Object):注册小程序,只能在app.js里面调用,且只能调用一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20App({
onLaunch: function({ //小程序初始化完成时触发,全局只触发一次。
path, //打开小程序的路径
query, //打开小程序的query
scene, //打开小程序的场景
referrerInfo:{ //当场景为由从另一个小程序或公众号或App打开时,返回此字段
appId, //部分场景支持
extraData, //数据
},
}) {},
onShow: function(options) {}, //小程序启动,或从后台进入前台显示时触发。options和onLaunch一样
onHide: function() {}, //小程序从前台进入后台时触发。
onError: function(msg) {},
onPageNotFound: function({ //小程序初始化完成时触发,全局只触发一次。
path, //不存在页面的路径
query, //打开不存在页面的query
isEntryPage: true, //是否本次启动的首个页面
}) {},
globalData: 'I am global data’ //自定义数据,用this可以访问。
})getApp():获取App实例
1
2var appInstance = getApp()
console.log(appInstance.globalData) // I am global data
注册页面
Page(Object)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35Page({
data, //初始化数据
//以下为生命周期函数
onLoad: function({ //页面加载时触发。一个页面只会调用一次。
query,
}) {},
onShow: function(options) {}, //页面显示/切入前台时触发
onReady: function() {}, //初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
onHide: function(options) {}, //页面隐藏/切入后台时触发
onUnload: function(msg) {}, //页面卸载时触发
//以下为事件处理函数
onPullDownRefresh: function() {}, //监听用户下拉刷新事件。 【wx.startPullDownRefresh,wx.stopPullDownRefresh】
onReachBottom: function() {}, //监听用户上拉触底事件
onPageScroll: function({ //页面卸载时触发
srollTop, //页面在垂直方向已经滚动的距离
}) {},
onShareAppMessage: function({ //监听用户点击页面内转发按钮(<button> 组件 open-type="share")或右上角菜单“转发”按钮的行为
from, //1, button; 2, menu
target, // button||undefined
webViewUrl, //页面中包含<web-view>组件时,返回当前<web-view>的url
}) {
return {
title, //转发标题
path, //转发路径
imageUrl, //转发封面图片
}
},
onTabItemTap: function({ //点击 tab 时触发,1.9.0版本以上
index, //被点击tabItem的序号,从0开始
pagePath, // 被点击tabItem的页面路径
text, //被点击tabItem的按钮文字
}) {},
})Page.setData()
- Page.route
视图层
数据绑定
1 | <view> {{message}} </view> |
条件渲染 : wx:if, wx:elif,wx:else
1 | <view class='test-view test-view-if'> |
列表渲染
1 | //默认下标: index, 当前项默认变量:item |
模板
1 | <template name="msgItem"> |
事件
1 | <view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view> |
- bind:不阻止冒泡
- catch: 阻止冒泡
引用
import:可以使用引用文件定义的template
<import src="a.wxml"/>
include:类似于将引用文件的全部代码拷贝到引用位置1
2
3<include src="header.wxml"/>
<view> body </view>
<include src="footer.wxml"/>
样式: WXSS
对css的两点扩充:
- 尺寸单位rpx
- 样式导入:
@import "common.wxss";
支持以下选择器:
选择器 | 样例 | 样例描述 |
---|---|---|
.class | .intro | 选择所有拥有 class=”intro” 的组件 |
#id | #firstname | 选择拥有 id=”firstname” 的组件 |
element | view | 选择所有 view 组件 |
element, element | view, checkbox | 选择所有文档的 view 组件和所有的 checkbox 组件 |
::after | view::after | 在 view 组件后边插入内容 |
::before | view::before | 在 view 组件前面边插入内容 |
wxs
- wxs标签
属性名 | 类型 | 说明 |
---|---|---|
module | String | 当前 |
src | String | 引用 .wxs 文件的相对路径。仅当本标签为单闭合标签或标签的内容为空时有效。 |
- .wxs 文件
wxml 通过wxs标签获取; wxs文件通过require 获取
自定义组件
组件规则
- 类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成
- json 文件中进行自定义组件声明: component: true
- 使用Component() 注册组件
使用组件
1 | { |
- slot
- 向组件传递数据
- 组件事件: triggerEvent()