学习微信小程序(一)
学习目标
- 能够知道如何创建小程序项目
- 能够清楚小程序项目的基本组成结构
- 能够知道小程序页面由几个部分组成
- 能够知道小程序中常见的组件如何使用
- 能够知道小程序如何进行开发和发布
小程序简介
一、小程序与普通网页开发的区别
①运行环境不同
网页运行在浏览器环境中
小程序运行在微信环境中
②API 不同
由于运行环境不同,所以小程序中,无法调用BOM和DOM的API。但是小程序可以调用微信环境提供的各种API
例如:地理定位、扫码、支付
③开发模式不同
网页开发模式:浏览器 + 代码编辑器
小程序有自己的一套标准开发模式:
- 申请小程序开发账号
- 安装小程序开发者工具
- 创建和配置小程序项目
注册小程序开发账号 & 安装开发者工具
略
创建第一个小程序
点击 “加号” 按钮
填写项目信息
- 新建项目
- 填写目录、AppID
- 不使用云服务 语言:Javascript
- 点击新建
项目创建完成
在模拟器上查看项目效果
- 编译
在真机上预览效果
- 预览
- 使用手机扫码
主页面的5个组成部分
- 菜单栏
- 工具栏
- 模拟器
- 代码编辑区
- 调试区
认识小程序的基本结构
小程序的项目结构
一、了解项目的基本组成结构
①pags 用来存放所有小程序的页面
②utils 用来存放工具性质的模块(例如:格式化时间自定义模块)
③app.js 小程序项目的入口文件
④app.json 小程序项目的全局配置文件
⑤app.wxss 小程序项目的全局样式文件
⑥project.config.json 项目的配置文件
⑦sitemap.json 用来配置小程序及其页面是否允许被微信索引
二、小程序页面组成部分
小程序官方建议把所有小程序的页面,都存在pages目录中,以单独的文件夹存在
每个页面有由 4 个基本文件组成,它们分别为:
① .js文件(页面的脚本文件,存放页面的数据、事件处理函数等)
② .json文件(当前页面的配置文件,配置窗口的外观、表现等)
③ .wxml文件(页面模板结构文件)
④ .wxss文件(当前页面的样式表文件)
小程序的代码构成
JSON文件
JSON 配置文件的作用
JSON 是一种数据格式,在实际开发中,JSON总是以配置文件的形式出现。小程序项目中也不例外:通过不同的 .json文件,可以对小程序项目进行不同级别的配置。
小程序项目中有4种json配置文件,分别是
①项目根目录的app.json配置文件
②项目根目录的project.config.json配置文件
③项目根目录的sitemap.json配置文件
④每个页面文件夹中的.json配置文件
app.json文件
app.json是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部tab等。
1
2
3
4
5
6
7
8
9
10
11
12
13{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"navigationBarTextStyle": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarBackgroundColor": "black"
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}简单了解4个配置项的作用
① pages:用来记录当前小程序所有页面的路径
② window:全局定义小程序所有页面的背景色、文字颜色等
③ style:全局定义小程序组件所使用的样式
④ sitemapLocation:用来指明sitemap.json的位置
project.config.json文件
project.config.json是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:
- setting 中保存了编译相关的配置
- projectname 中保存的是项目名称
- appid 中保存的是小程序的账号ID
sitemap.json文件
微信现已开放小程序内搜索,效果类似于PC网页的SEO。sitemap.json文件用来配置小程序是否允许微信索引。
当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索关键字和页
面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。注意:sitemap的索引提示是默认开启的,如需要关闭sitemap的索引提示,可在小程序项目配置文件
project.config.json 的 setting 中配置字段checkSiteMap为false页面的.json配置文件
小程序中的每一个页面,可以使用.json文件来对本页面窗口外观进行配置,页面中的配置会覆盖app.json的window中相同的配置项
新建小程序页面
只需要在app.json -> pages 中新增页面的存放路径即可自动生成新的页面
修改项目首页
只需要调整app.json -> pages 数组中页面路径的前后顺序即可
WXML模板
什么是WXML
WXML是小程序框架设计的一套标签语言,用来构建小程序页面的结构,类似于网页开发的HTML
WXML和HTML的区别
①标签名称不同
- HTML(div,span,img,a)
- WXML(view,text,image,navigator)
②属性点不同
<a href="#">超链接</a>
1
2
3
- ~~~wxml
<navigator url="/pages/home/home"></navigator>
③提供了类似于Vue中的模板语法
- 数据绑定
- 列表渲染
- 条件渲染
什么是WXSS
WXSS是一套样式语言,用于描述WXML的组件样式,类似于网页开发中的CSS
WXSS和CSS的区别
①新增了rpx尺寸单位
- CSS中需要手动进行像素单位换算,例如rem
- WXSS在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算
②提供了全局和局部样式
- 项目根目录中的app.wxss会作用于所有小程序页面
- 局部页面的.wxss样式仅对当前页面生效
③WXSS仅支持部分CSS选择器
- .calss和#id
- element
- 并集选择器、后代选择器
- ::after 和 ::before 等伪类选择器
JS逻辑交互
小程序中的..js文件
一个项目仅仅提供界面展示是不够的,在小程序中,我们通过.js文件来处理用户的操作。例如:响应用户的
点击、获取用户的位置等等。小程序中的JS文件分为三大类,分别是:
① app.js
- 是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序
②页面的.js文件
- 是页面的入口文件,通过调用Page()函数来创建并运行页面
③普通的.js文件
- 是普通的功能模块文件,用来封装公共的函数或属性供页面使用
小程序的宿主环境
小程序只能在微信里运行,例如
Windows的软件只能在Windows下运行
Mac的软件只能在Mac下运行
小程序的组件
小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组
件分为了9大类,分别是:
①视图容器
②基础内容
③表单组件
④导航组件
⑤媒体组件
⑥map 地图组件
⑦canvas 画布组件
⑧开放能力
⑨无障碍访问
常用的视图组件
view的基本使用
- 普通的视图区域
- 类似于HTML中的div,是一个块级元素
- 常用来实现页面的布局效果
实现flex横向布局效果
list.wxml
1 | <view class="test"> |
list.wxss
1 | .test viwx { |
scroll-view的基本使用
- 滚动列表
scroll-y 竖向滑动
scroll-x 横向滑动
swiper和swiper-item的基本使用
- 轮播图容器和轮播item组件
在swiper标签里添加属性即可
swiper-item是轮播里的内容(可以添加图片或者文字)
*轮播图默认高度为150px
swiper常用属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
indicator-dots | Boolean | false | 是否显示面板指点 |
indicator-color | color | rgba(0,0,0,.3) | 指示点颜色 |
indicator-active-color | color | #000000 | 当前选中的指示点颜色 |
autoplay | Boolean | false | 是否自动切换 |
interval | number | 5000 | 自动切换时间间隔 |
circular | Boolean | false | 是否采用衔接滑动 |
text组件的基本使用
- 文本组件
- 类似于HTML中的span标签,是一个行内元素
selectable属性,实现长按选中文本内容的效果
rich-text的基本使用
- 富文本组件
- 支持把HTML字符串渲染为WXML结构
通过rich-text组件的nodes属性节点,把HTML字符串渲染为对应的UI结构,例如:
1 | <rich-text nodes="<h1 style='color:red;'>标题<h1>"></rich-text> |
button的基本使用
- 按钮组件
- 功能比HTML中的button按钮丰富
- 通过open-type属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
1 | <view> ~通过 type指定按钮类型~ </view> |
image的基本使用
- 图片组件
- image组件默认宽度约300px、高度约240px
image 组件的 mode属性用来指定图片的裁剪和缩放模式,常用的mode属性值如下:
mode值 | 说明 |
---|---|
scaleToFill | (默认值)缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image 元素 |
aspectFit | 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 |
aspectFill | 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方 aspectFill 向是完整的,另一个方向将会发生截取。 |
widthFix | 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变 |
heightFix | 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变 |
navigator的基本使用
- 页面导航组件
- 类似于HTML中的a标签
数据绑定
数据绑定的基本原则
①在data中定义数据
②在WXML中使用数据
在data中定义页面的数据
在页面对应的.js文件中,把数据定义到data对象中即可
1
2
3
4
5
6
7
8Page({
data: {
// 字符串类型的数据
info: 'init data',
// 数组类型的数据
msgList: [{msg: 'hello'}, {msg: 'world'}]
}
})Mustache语法的格式
把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来
1
<view>{{变量}}</view>
Mustache语法的应用场景
绑定内容
页面数据如下:1
2
3
4
5Page({
data: {
info: 'init data'
}
})页面结构如下:
1
<view>{{ info }}</view>
- 绑定属性
页面数据如下:1
2
3
4
5Page({
data: {
imgSrc: 'init data'
}
})页面结构如下:
1
<image src="{{imgSrc}}"></image>
运算(三元运算、算术运算等)
三元运算
页面数据如下:
1
2
3
4
5Page({
data: {
randomNum: Math.random() * 10 //生成 10 以内的随机数
}
})页面的结构如下:
1
<view>{{ randomNumber >= 5 ? '随机数大于或者等于5' : '随机数小于5' }}</view>
算数运算
页面数据如下:
1
2
3
4
5Page({
data: {
randomNum: Math.random().toFixed(2) //生成一个带两位小数的随机数,例如:0.34
}
})页面的结构如下:
1
<view>生成100以内的随机数:{{randomNuum * 100}}</view>
事件绑定
什么是事件
事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务处理。
①描述交互事件 ②用户交互触发事件 ③逻辑层收到回调
渲染层Webview → 客户端Native→逻辑层JsCore
小程序中常用的事件
类型 绑定方式 事件描述 tap bindtap或bind:tap 手指触摸后马上离开,类似于HTML中的click事件 input bindinpu或bind:input 文本框的输入事件 change bindchange或bind:change 状态改变时触发 事件对象的属性列表
当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示:
属性 类型 说明 type String 事件类型 timeStamp Integer 页面打开到触发所经过的毫秒数 target Object 触发事件的组件的一些属性值集合 currentTarget Object 当前组件的一些属性值集合 detail Object 额外的信息 touches Array 触摸事件,当前停留在屏幕中的触摸点信息的数组 changedTouches Array 触摸事件,当前变化的触摸点信息的数组 target和currentTarget的区别
target是触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件
点击内部按钮时,点击事件以冒泡的方式向外扩散,也会触发外层view的tap事件处理函数。此时,对于外层的view来说:
- e.target 指向的是触发事件的源头组件,因此,e.target是内部按钮组件
- e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件
bindtap的语法格式
在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触发行为。
①通过bindtap,可以为组件绑定tap触摸事件,语法如下:
1
<button type="primary" bindtap="btnTapHandler">按钮</button>
②在页面的.js文件中定义对应的事件处理函数,事件参数通过形参event(一般简写成e)来接收
1
2
3
4
5Page ({
btnTapHandler(e) { // 按钮的 tap 事件处理函数
console.log(e) // 事件参数对象 e
}
})在事件处理函数中为data中的数据赋值
通过调用**this.setData(dataObject)**方法,可以给页面data中的数据重新赋值,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12// 页面的.js 文件
Page ({
data: {
count: 0
},
// 修改 count 的值
changeCount() {
this.setData({
count: this.data.count + 1
})
}
})事件传参
小程序中的事件传参比较特殊,不能绑定事件的同时为事件处理函数传递参数。例如,下面的代码不能正常工作:
1
<button type="primary" bindtap="btnHandler(123)">按钮</button>
因为小程序会把bindtap的属性值,统一当作事件名称来处理
正确的传参方式如下:
可以为组件提供**data-**自定义属性传参,是参数的名字,示例代码如下
1
<button bindtap="btnHandler" data-info="{{123}}">按钮</button>
最终:
- info 会被解析为参数的名字
- 数值123会被解析为参数的值
获取参数的值:
在事件函数中,通过event.target.dataset.参数名即可获取到具体参数的值,示例代码如下:
1
2
3
4
5
6btHandler(event) {
// dataset 是一个对象,包含了所有通过 data-* 传递过来的参数项
console.log(event.target.dataset)
// 通过 dataset 可以访问到具体参数的值
console.log(e.target.dataset.info)
}bindinput 的语法格式
在小程序中,通过input事件来响应文本框的输入事件,语法格式如下:
① 通过 bindinput,可以为文本框绑定输入事件:
1
<input bindinput="inputHandler"><input>
② 在页面的 .js 文件中定义事件处理函数:
1
2
3
4inputHandler(e){
//e.detail.value 是变化过后,文本框最新的值
console.log(e.detail.value)
}实现文本框和data之间的数据同步
实现步骤:
①定义数据
1
2
3
4
5Page({
data: {
msg: '你好'
}
})②渲染结构
1
<input value="{{msg}}" bindinput="iptHandler"></input>
③美化样式
1
2
3
4
5
6input {
border: 1px solid #eee;
padding: 5px;
margin: 5px
border-radius: 3px
}④绑定input事件处理函数
1
2
3
4
5
6
7// 文本框内容改变的事件
iptHandler(e) {
this.setData ({
// 通过 e.detail.value
msg: e.detail.value
})
}
条件渲染
wx:if
在小程序中,使用 wx:if=”“ 来判断是否需要渲染该代码块
1
<view wx:if="{{condition}}"> True </view>
也可以用 wx:elif 和 wx:else 来添加 else 判断:
1
2
3<view wx:if="{{type === 1}}"> 男 </view>
<view wx:elif="{{type === 2}}"> 女 </view>
<view wx:else> 保密 </view>结合block使用wx:if
如果要一次性控制多个组件的展示与隐藏,可以使用一个block标签将多个组件包裹起来,并再block标签上使用wx:if控制属性,示例如下:
1
2
3
4<block wx:if="{{true}}">
<view> view1 <view>
<view> view2 <view>
</block>注意:block并不是一个组件,它只是一个包裹性质的容器,不会在页面做任何渲染。
hidden
在小程序中,直接使用 hidden=”“ 也能控制元素的显示与隐藏:
1
<view hidden="{{ condition }}"> 条件 true 隐藏,条件为 false 显示 </view>
wx:if 与 hidden 的对比
① 运行方式不同
- wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
- hidden 以切换样式的方式(display: none/block;),控制元素的显示与隐藏
② 使用建议
- 频繁切换时,建议使用hidden
- 控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换
列表渲染
wx:for
通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下:
1
2
3<view wx:for="{{array}}">
索引是:{{index}} 当前是:{{item}}
</view>默认情况下,当前循环项的索引index表示;当前循环项用item表示。
手动指定索引和当前项的变量名*
使用 wx:for-index 可以指定当前循环项的索引的变量名
使用 wx:for-item 可以指定当前项的变量名
示例代码如下
1
2
3<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="it">
索引是:{{idx}} 当前是:{{it}}
</view>
wx:key 的使用
类似于Vue列表渲染中的 :key ,小程序在实现列表渲染时,也建议为渲染出来的列表指定唯一的key值,从而提高渲染的效率,示例代码如下:
1
2
3
4
5
6
7
8
9
10// data 数据
data: {
userList: [
{ id: 1, name: '小红' },
{ id: 2, name: '小黄' },
{ id: 3, name: '小白' }
]
}
// wxml 结构
<view wx:for="{{userList}}" wx.key="id">{{item.name}}</item>
wx:for 加 wx:key 才不会报警告⚠
WXSS - WXSS和CSS的关系
什么是WXSS
WXSS是一套样式语言,用于美化WXML的组件样式,类似于HTML中的CSS
WXSS和CSS的关系
WXSS具有CSS大部分的特性,同时,WXSS还对CSS进行了扩充以及修改,以适应小程序的开发
与CSS相比,WXSS扩展的特性有:
rpx 尺寸单位
什么是rpx尺寸单位
rpx是微信小程序独有的用来解决屏适配的尺寸单位
rpx的实现原理
rpx的实现原理非常简单:鉴于不同设备屏幕大小不同,为实现屏幕的自动适配,rpx把所有设备的屏幕,在宽度上等分为750份(即:当前屏幕的总宽度为150rpx)
在较小的设备上,1rpx所代表的宽度较小
在较大的设备上,1rpx所代表的宽度较大
小程序在不同的设备上运行,会自动换算对应的像素单位,从而实现屏幕适配
rpx与px之间的换算
在iPhone6上,屏幕宽度为375px,共有750个物理像素,等分为750rpx
750rpx = 375px =750 物理像素
1rpx = 0.5px = 1像素
官方建议:开发小程序时,设计师可以用iPhone6作为视觉稿的标准(因为iPhone6是0.5px)
@import 样式导入
什么是样式导入
使用WXSS提供**@import**语法,可以导入外联的样式表。
@import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束。示例如下:
1
2
3
4/** com.wxss **/
.small-p {
padding:5px
}1
2
3
4
5/** app.wxss **/
@import "com.wxss";
.middle-p {
padding:15px;
}
WXSS - 全局样式与局部样式
全局样式
定义在 app.wxss 中的样式为 全局样式,作用于每一个页面。
局部样式
在页面的 .wxss 文件的样式为局部样式,只作用于当前页面。
注意:
① 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式
② 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式
全局配置
全局配置文件及常用的配置项
小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下:
① pages:记录当前小程序所有页面的存放路径
② window:全局设置小程序窗口的外观
③ tabBar:设置小程序底部的tabBar效果
④style:是否启用新版组件样式
window
小程序窗口的组成部分
- navigationBar 导航栏区域
- background 背景区域(默认不可见,下拉才显示)
- 页面的主体区域(用来显示wxml中的布局)
了解window节点常用的配置项
属性名 类型 默认值 说明 navigationBarTitleText String 字符串 导航栏标题文字内容 navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如 #000000 navigationBarTextStyle String white 导航栏标题颜色,仅支持black / white backgroundColor HexColor #ffffff 窗口的背景色 backgroundTextStyle String dark 下拉loading的样式,仅支持 dark / light enablePullDownRefresh Boolean false 是否全局开启下拉刷新 onReachBottomDistance Number 50 页面上拉触底事件触发时距页面底部距离,单位为px 设置下拉窗口的背景颜色
当全局开启下拉刷新功能后,默认窗口背景为白色。如果要自定义颜色,设置步骤如下:
app.json -> window -> backgroundColor 指定16进制的颜色 如 #fff000
设置下拉刷新的样式
当全局开启下拉刷新功能后,默认窗口的loading样式为白色,如果要修改样式效果,设置如下:
app.json -> window -> backgroundTextStyle 指定dark值,可选值只能是light和dark
设置上拉触底的距离
概念:上拉触底是移动端的专有名词,通过手指上拉的操作,从而加载更多数据的行为,设置如下:
app.json -> window -> onReachBottomDistance 设置新的数值,默认距离为50px,如果没有特殊需求,建议使用默认即可
tabBar
什么是tabBar
tabBar 是移动端的页面效果,用于多界面的切换。小程序通常分为:
- 底部tabBar
- 顶部tabBar
- 注意:
- tarBar最少2个,最多5个
- 当渲染顶部tabBar时,不显示icon,只显示文本
tabBar 的6个组成部分
① backgroundColor:tabBar的背景色
② selectedIconPath:选中时的图片路径
③ borderStyle:tabBar框的颜色
④ iconPath:未选中的图片路径
⑤ selectedColor:tabBar选中文字时的颜色
⑥ color:tabBar上的默认(未选中)文字时的颜色
tabBar节点的配置项
属性 类型 必填 默认值 描述 position String 否 bottom tabBar的位置,仅支持bottom/top borderStyle Sring 否 black tabBar上边框的颜色,仅支持black/white color HexColor 否 tabBar上的默认(未选中)文字时的颜色 selectedColor HexColor 否 tabBar选中文字时的颜色 backgroundColor HexColor 否 tabBar的背景色 list Array 是 tab页签的列表,最少2个,最多5个tab 每个tab项的配置选项
属性 类型 必填 描述 pagePath String 是 页面的路径,页面必须再pages中定义 text String 是 tab上显示的文字 iconPath String 否 未选中时图片的路径,当position为top时,不显示icon selectedIconPath String 否 选中时的图片路径,当position为top时,不显示icon tabBar怎么写,在app.json
1
2
3
4
5
6
7
8
9
10
11
12"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "主页"
},
{
"pagePath": "pages/test/test",
"text": "test"
},
]
}建议图标名称 - 包含active的是选中的图标 - 不包含active的是默认图标
页面配置
页面配置文件的作用
小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面窗口的外观、页面效果等进行配置
页面配置和全局配置的关系
小程序中,app.json 中的window节点,可以全局配置小程序中的每个页面的窗口表现。
如果某些小程序页面想要拥有特殊的窗口表现,此时,“页面级别的 .json 配置文件” 就可以实现这种需求。
注意:就近原则
页面配置中常用的配置项
属性 类型 默认值 描述 navigationBarBackgroundColor HexColor #000000 当前页面导航栏颜色 navigationBarTextStyle String white 当前页面导航栏标题颜色,仅支持black/white navigationBarTitleText String 当前页面导航栏标题文字内容 backgroundColor HexColor #ffffff 当前页面窗口的背景色 backgroundTextStyle String dark 当前页面下拉loading样式,仅支持dark和light enablePullDownRefresh Boolean false 是否为当前页面开启下拉刷新的效果 onReachBottomDistance Number 50 页面上拉触底事件触发时的页面距离,单位为px
网络数据请求
小程序中的网络数据请求限制
出于安全性的方面考虑,小程序官方对数据接口的请求做出了两个限制:
只能请求 HTTPS 类型的接口
必须将接口的域名添加到信任列表中
信任列表:详情-项目配置-request 合法域名
配置request合法域名
配置步骤:登录微信小程序管理后台 -> 开发 - > 开发设置 -> 服务器域名 ->修改request合法域名
注意事项:
- 域名只支持https协议
- 域名不能使用IP地址或localhost
- 域名必须经过ICP备案
- 服务器域名一个月内最多可申请5次修改
发起GET请求
调用wx.request()方法,可以发起GET数据请求,示例代码如下:
1
2
3
4
5
6
7
8
9
10
11wx.request({
url: 'https://test.cn/api/get', // 请求的接口地址,必须基于 https 协议
method: 'GET', // 请求方式
data: { // 发送到服务器的数据
name: 'zs',
age: 22
},
success:(res) => { // 请求成功后的回调函数
console.log(res)
}
})发起POST请求
调用wx.request()方法,可以发起POST数据请求,示例代码如下:
1 | wx.request({ |
在页面刚加载时请求数据
在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的onLoad事件中调用获取数据的函数,示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getSwiperList()
this.getGridList()
},
// 获取轮播图的数据
getSwiperList(){...
},
// 获取九宫格的数据
getGridList(){...
},跳过request合法域名校验
如果后端程序员仅仅提供了http的协议接口、暂时没有提供https协议的接口
此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启【开发环境不校验请求域名、TLS版本及HTTPS证书】选项,跳过request合法域名的校验。
详情-本地设置-开发环境不校验请求域名、TLS版本及HTTPS证书
注意:跳过request合法域名校验的选项,仅限在开发和调试阶段使用!
关于跨域和Ajax的说明
跨域只存在Web开发中,小程序不存在。
Ajax技术的核心是依赖于浏览器中的XMLHttpRequest这个对象,由于小程序的宿主环境是微信客户端,所以不能叫“发起Ajax请求”,而是叫做“发起网络数据请求”。
总结
能够使用WXML模板语法渲染页面结构
wx:if、wx:elif、wx:else、hidden、wx:for、wx:key
能够使用WXSS样式美化页面结构
rpx尺寸单位、@import样式导入、全局样式和局部样式
能够使用app.json对小程序进行全局性配置
pages、window、tabBar、style
能够使用page.json对小程序页面进行个性化配置
对单个页面进行个性化配置、就近原则
能够知道如何发起网络数据请求
wx.request() 方法、onLoad() 事件
该文章Mec所著,如有错误请联系作者邮箱更改