建议学习新手视频教程大概了解
根据开发指南学习,具体内容查询开发者文档
app.(js/json/wxss) 全局配置
page.(js/json/wxss/wxml) 页面配置
project.config.json 开发工具配置
基本项目结构
1 | ├── app.js 小程序入口文件,app单例的执行逻辑 |
WXML
类似html,后面说明一些区别:
1. 标签名字不同
2. 多了些表达式 wx:if
数据绑定
1 | <!--pages/wxml/index.wxml--> |
1 | // pages/wxml/index.js |
逻辑语法
1 | <!-- {{}} 中可以包含一些逻辑运算 --> |
条件逻辑
WXML 中,使用 wx:if=""
来判断是否需要渲染该代码块。
需要包装在标签中
1 | <view wx:if="{{length > 5}}"> 1 </view> |
block标签包装条件语句
1 | <block wx:if="{{true}}"> |
循环语句
在组件上使用 wx:for 控制属性绑定一个数组
1 | <!-- 对应的js脚本文件 |
wx:key
来指定列表中项目的唯一的标识符
1 | <switch wx:for="{{objectArray}}" wx:key="unique" > {{item.id}} </switch> |
1 | Page({ |
模板
<template/>
定义模板
模板定义
1 | <template name="msgItem"> |
模板使用 ,使用 is 属性,声明需要的使用的模板
1 | <!-- |
引用
WXML 提供两种文件引用方式import和include。
import 可以在该文件中使用目标文件定义的 template,( import 不具有递归的特性: C import B, B import A, C不包含A的template)
1 | <import src="item.wxml"/> |
include 可以将目标文件中除了<template/> <wxs/>
外的整个代码引入,相当于是拷贝到 include 位置
1 | <!-- index.wxml --> |
WXSS
rpx 尺寸单位,自动适配屏幕宽度。
WXSS引用
1 | @import './test_0.wxss' |
样式选择器
权重说明:
1 | view{ // 权重为 1 |
js
模块化
可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports
或者 exports
才能对外暴露接口。
1 | // common.js |
模块的引用
1 | var common = require('common.js') |
脚本执行顺序,按照App.json 里面定义的页面顺序。内部按照定义或者require的模块顺序执行
作用域
定义在js内部的为局部变量
1 | // a.js |
定义全局变量
1 | // app.js |
在页面js通过 getApp
方法获取到全局唯一的 App 实例
1 | const appInstance = getApp() |
程序与页面
小程序造器App()
1 | App({ |
页面构造器Page()
1 | Page({ |
onLoad: function(options) { }
获取传递参数
1 | // pages/list/list.js |
如果有特殊字符,如中文等字符 注意UrlEncode
this.setData 更新渲染数据,可以跟callback回调,渲染成功后执行
1 | Page({ |
页面用户行为
- onPullDownRefresh
监听用户下拉刷新事件,需要在app.json
的window选项中或页面配置page.json
中设置enablePullDownRefresh为true。当处理完数据刷新后,wx.stopPullDownRefresh
可以停止当前页面的下拉刷新。
1 | //page.json |
- onReachBottom
监听用户上拉触底事件。可以在app.json的window选项中或页面配置page.json中设置触发距离onReachBottomDistance。在触发距离内滑动期间,本事件只会被触发一次。
1 | //page.json |
onPageScroll
监听用户滑动页面事件,参数为 Object,包含 scrollTop 字段,表示页面在垂直方向已滚动的距离(单位px)。onShareAppMessage
只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮,在用户点击转发按钮的时候会调用,此事件需要return一个Object,包含title和path两个字段,用于自定义转发内容1
2
3
4
5
6onShareAppMessage: function () {
return {
title: '自定义转发标题',
path: '/page/user?id=123'
}
}
页面跳转和路由[ pageA, pageB, pageC ]
页面栈,最大层级为10层。
1 | wx.navigateTo({ url: 'pageD' }) |
tabBar
1 | // app.json |
wx.switchTab
触发切换tabBar,原来的页面栈会被清空只保留底层wx.navigateTo
和wx.redirectTo
只能打开非TabBar页面,wx.switchTab
只能打开Tabbar页面。
组件
页面组件,标签引用组件
https://mp.weixin.qq.com/debug/wxadoc/dev/component/
API
wx.request({})
1 | wx.request({ |
事件
事件绑定,冒泡,捕获
冒泡:指事件从 子组件,传递到父组件(里->外)
捕获:捕获阶段位于冒泡阶段之前,且在捕获阶段中,事件到达节点的顺序与冒泡阶段恰好相反(外->里)
1 | bindTap //事件绑定,不中断冒泡 |
1 | <view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2"> |
bindtap 事件参数,event target
data tap事件传递参数
xml没有大写,如果要驼峰方式需要用data-user-name => event.target.dataset.userName
1 | // wxml |
兼容
1 | wx.getSystemInfoSync() |
交互反馈
hover响应
1 | <button hover-class="hover"> 点击button </button> |
Toast
1 | wx.showToast({ // 显示Toast |
提示弹框
1 | wx.showModal({ |
####获取微信用户数据
1、使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。
详情参考文档:
https://developers.weixin.qq.com/miniprogram/dev/component/button.html
2、使用 open-data 展示用户基本信息。
详情参考文档:
https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html
本地数据缓存
小程序本地数据持久化,小程序沙盒:一个微信号、一个小程序 独立存储
小程序提供了读写本地数据缓存的接口,通过wx.getStorage/wx.getStorageSync
读取本地缓存,通过wx.setStorage/wx.setStorageSync
写数据到缓存,其中Sync后缀的接口表示是同步接口[9],执行完毕之后会立马返回
1 | wx.getStorage({ |
1 | // 异步接口在success/fail回调才知道写入成功与否 |
自定义组件component
轮播