微信小程序
准备工作
- 微信公众平台,注册小程序账号,获取小程序 AppID 和 AppSecret
- 微信小程序开发文档
- 小程序开发者工具下载
其他:
1、开发者需要先申请开发权限。由小程序账号管理员在微信公众平台添加开发者的微信号。注意:各类权限的项目成员,总共最多添加 15 个账号。
2、开发者必须先在微信公众平台获取 AppID,才能创建小程序项目。
- 在项目初始化时,开发者需要填写 AppID
- 后端服务可以选择「不使用云服务」
- 模板选择可以选择最简单的「JS-基础模版」,由开发者决定
3、微信小程序对请求的接口有 3 个强制要求:
- 必须是有备案的域名。如果工期短,可以先申请域名备案,工信部审核需要时间
- 必须是有 SSL 证书(https)
- 域名不得带端口号
注意:如果是自己做项目,需要买域名 + 工信部备案 + 公安备案 + 小程序备案
创建页面的方式
方式一、在app.json
中配置pages
,添加路径后按cmd + s
保存,会自动生成页面文件
{
"pages": ["pages/index/index", "pages/list/index"]
}
方式二、在pages
目录下新建一个文件夹,例如 list,选中 list 右键打开菜单,选择「新建 Page」,会自动生成页面文件,同时会自动在app.json
中配置pages
创建组件的方式:右键目录选择「新建 Component」
配置入口页面
在app.json
中配置entryPagePath
,表示入口页面路径,可以是首页,也可以是登录页。如果没有配置这个字段,那么pages
中的第一个路径就是入口页面。
{
"entryPagePath": "pages/index/index",
"pages": ["pages/index/index", "pages/list/index"]
}
NPM 支持
在小程序中要使用 npm 依赖包,必须要执行一遍「构建 npm」流程。
打开「工具」,选择「构建 npm」,构建成功后,会在根目录下生成一个 miniprogram_npm
目录,这里是小程序真正使用的包。
例如,如果是新项目,就执行npm init -y
初始化,然后安装 vant,安装成功后还是不能使用的,需要执行构建 npm。
注意,不是所有的 npm 依赖都能在小程序中使用,小程序依赖于微信的运行环境。
渲染模式
渲染模式有两种:Skyline、WebView
- Skyline 渲染模式在 2.29.2 及以上基础库支持。
- 当前小程序未 设置线上最低基础库版本,在低版本的客户端中,将使用 WebView 渲染模式进行渲染。
- 需要保证页面
pages/index/index
同时在两种渲染模式下都能够正常显示;
如果需要使用 WebView 渲染模式,可以在 app.json 中配置,去掉以下 3 个字段的配置:
{
"renderer": "skyline",
"rendererOptions": {
"skyline": {
"defaultDisplayBlock": true,
"disableABTest": true,
"sdkVersionBegin": "3.0.0",
"sdkVersionEnd": "15.255.255"
}
},
"componentFramework": "glass-easel"
}
window 全局配置
在app.json
中的 windown 字段,用于设置小程序的状态栏、导航条、标题、窗口背景色
- 状态栏:窗口顶部,显示有信号、时间、电量的那一栏
- 导航条:窗口顶部的第二部分,显示有标题、返回、前进、分享等按钮
- 窗口:窗口是默认不展示的,当用户下拉刷新时会显示
使用 sass 或 less
在project.config.json
中配置 useCompilerPlugins
,这里可以配置 sass、less、typescript
{
"setting": {
"useCompilerPlugins": ["sass"]
}
}
然后将.wxss
后缀的文件改为.scss
或.less
。如果没有生效就重启开发者工具
样式导入
使用@import
语句可以导入外联样式表,@import
后跟需要导入的外联样式表的相对路径,用;
表示语句结束。
/** common.wxss **/
.box {
}
/** app.wxss **/
@import 'common.wxss';
.app {
}
rpx
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。微信小程序规定屏幕宽为 750rpx。
设计师可以用 iPhone6 作为设计稿的标准,在 iPhone6 上,屏幕宽度为 375px,共有 750 个物理像素,则 750rpx = 375px = 750 物理像素,1rpx = 0.5px = 1 物理像素。
- 当屏幕宽度等于 750px 时,1px = 1rpx
- 当屏幕宽度等于 375px 时, 1px = 0.5rpx
- 设计稿宽度如果按照 750px 设计,那么设计稿是多少 px 就写多少 rpx
- 设计稿宽度如果按照 375px 设计,那么设计稿是多少 px 就写 2 倍的 rpx
列表渲染
- 数组每一项的变量名默认为 item,下标变量名默认为 index
- 使用
wx:for-item
可以指定当前元素的变量名,修改变量名在循环嵌套中常用 - 使用
wx:for-index
可以指定当前下标的变量名
<view wx:for="{{list1}}" wx:key="index">{{item}}</view>
<view wx:for="{{list2}}" wx:for-index="idx" wx:for-item="itemName">{{idx}}: {{itemName.message}}</view>
wx:key
的值有以下两种形式,且不需要使用双大括号语法
- 字符串,数组元素的某个属性,该属性的值要是唯一的字符串或数字,如 id
- 关键字
*this
, 表示数组元素本身,该形式需要元素本身是一个唯一的字符串或者数字
如果花括号和引号之间有空格,会被解析成为字符串
<view wx:for="{{[1,2,3]}} ">{{item}}</view>
<!-- 等同于 -->
<view wx:for="{{[1,2,3] + ' '}}">{{item}}</view>
wx:key
如果渲染的值是数组,item 表示数组元素,index 表示数组元素的下标- 如果渲染的是对象,item 表示对象属性的值,index 表示对象属性
<!-- obj: { name: 'zgh', age: 18 } -->
<view wx:for="{{obj}}" wx:key="index">{{item}}-{{index}}</view>
条件渲染
用法:wx:if
、wx:elif
、wx:else
<view wx:if="{{isShow}}">content</view>
<view hidden>content</view>
与hidden
属性的区别:hidden
属性是隐藏元素(display: none
),wx:if
是移除元素
数据操作
通过
this.setData
更改