视频加载失败

微信小程序常用Api

1866 字
9 分钟
微信小程序常用Api

本文学习微信小程序的常用API,内容整体分为配置、逻辑、样式、结构4个部分,也可以分为全局和页面级别

目录结构#

小程序项目可以分为两个级别:全局和页面级别,全局可以配置小程序整体信息,页面级别主要由配置、逻辑、样式、结构4个部分组成,详细:官方文档

全局配置文件#

使用全局配置制作菜单栏

app.json

"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
}, {
"pagePath": "pages/logs/logs",
"text": "日志"
}]
},

详细的全局配置文件:官方文档,总体的配置也很简单,文档可以这样看,配置项就是整体可以配置的内容,可以配置什么功能,常用的有entryPagePath、pages、window、tabBar和networkTimeout,下面的就是对配置项的详细描述

页面级别配置文件#

每一个小程序页面也可以使用同名 .json 文件来对本页面的窗口表现进行配置,页面中配置项会覆盖 app.json 的 window 中相同的配置项。

{
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "微信接口功能演示",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

完整配置项说明请参考 小程序页面配置 。

全局逻辑中的生命周期函数#

关于全局逻辑中的生命周期函数可以参考文档,除了生命周期函数的说明外,文档也列举了一些推荐和不推荐写法,如现在并不推荐使用 App() 中的参数,而是使用对应的 wx 调用来代替。 文档地址

onLaunch:小程序启动的时候自动执行,带一个参数;小程序初始化完成时触发,全局只触发一次。这里需要注意,如果短时间内多次打开是执行一次,如果长时间再打开,这时候onLaunch就会重新执行一次

app.js
App({
onLaunch(options){
console.log('onLaunch',options);
}
})

参数值可以参考:官方文档,也可以使用 wx.getLaunchOptionsSync 获取

onShow:小程序启动,或从后台进入前台显示时触发。一样也会带一个参数,onShow只要是退出重新进入小程序都会执行的一个函数,无论时间间隔的长短,这是与onLaunch区别,注意:onShow是onLaunch后的一个函数,也就是onLaunch是先执行,后才执行onShow

onShow(options){
console.log('onShow',options);
},

参数值可以参考:官方文档,也可以使用 wx.onAppShow 获取

onHide:小程序从前台进入后台时触发。一样也有一个参数,这个参数可以了解用户退出后的去向,可以和onShow配对理解。一个显示一个退出

onHide(options){
console.log('onHide',options);
}

onError:小程序发生脚本错误或 API 调用报错时触发。

// 不推荐的写法
App({
onLaunch(options) {
// 在启动时执行
},
onError(msg) {
// 发生脚本错误时执行
console.log(msg)
},
})
// 推荐的写法
App()
wx.onError(function () {
// 发生脚本错误时执行
console.log(msg)
})
// 在启动时执行
var options = wx.getLaunchOptionsSync()

推荐写法中,原来放在 onLaunch() 里的初始化代码,可以直接放在 app.js 顶层执行,也可以封装成初始化函数后主动调用。

app.js
App();
// 监听全局错误
wx.onError((msg) => {
console.log('全局错误:', msg);
});
// 获取启动参数
const options = wx.getLaunchOptionsSync();
// 初始化用户信息
function initUser() {
console.log('初始化用户信息');
}
// 封装启动逻辑
function initApp() {
console.log('小程序启动了');
const token = wx.getStorageSync('token');
initUser();
console.log('启动参数', options);
}
// 主动执行初始化
initApp();

全局方法及数据的定义及调用方式#

全局的方法,怎么在页面级别的js中调用呢,小程序提供了一个getApp的接口,需要注意的是,这里的sayHello需要写在App内,也就是不能用推荐写法,当然现在这种写法也不推荐了,可以通过模块化来实现同样功能,文档地址

app.js
App({
sayHello(){
console.log('hello word');
}
});
pages\index\index.js
const app = getApp()
Page({
onLoad(){
app.sayHello()
}
})

页面级别的生命周期函数#

在页面运行的某个时刻执行的函数,其实页面级别的生命周期函数和全局的差不多,只不过语义上有差别,页面级别有6个生命周期函数,具体可以参考文档:官方文档

onLoad:页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。

onShow:页面显示/切入前台时触发。

onReady:页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互

onHide:页面隐藏/切入后台时触发。 如 wx.navigateTo 或底部 tab 切换到其他页面,小程序切入后台等。

onUnload:页面卸载时触发。如wx.redirectTo或wx.navigateBack到其他页面时

onRouteDone:路由动画完成时触发。如 wx.navigateTo 页面完全推入后 或 wx.navigateBack 页面完全恢复时。

除了上面6个外,还有很多其他在特定操作下自动触发的函数,如下拉刷新、用户点击右上角转发,用户点击右上角转发到朋友圈等等

页面逻辑层数据的定义及与页面的串联#

事件的文档:官方文档

数据绑定:

Page({
data:{
num:'1'
},
})
<view>{{num}}</view>

点击事件:

changename(){
console.log('changename');
}
<view class="container" bind:tap="changename">{{num}}</view>

点击改变数据

Page({
data:{
num:'1'
},
changename(){
console.log('changename');
this.setData({
num:'2'
})
}
})
<view class="container" bind:tap="changename">{{num}}</view>

逻辑层中的 API#

官方API文档:文档 api调用一般都是通过wx.调用的

wx.showModal({
title: '提示',
content: '这是一个模态弹窗',
})
wx.request({
url:'https://www.fastmock.site/mock/fdf9557ad5613aec6428d08d90f25b45/weixin/api/getDate',
success(res){
console.log(res);
}
})

视图层的数据绑定#

视图层包括WXML和WXSS,可以理解为HTML5和CSS3,只不过一些属性可能不支持;

在小程序没有DOM的概念,有组件的概念,view是最小的组件,可以理解为div

实现判断,点击显示隐藏功能:

<view class="flex">
<button bind:tap="changename">{{msg}}</button>
<view wx:if="{{!show}}">hello</view>
<view hidden="{{show}}">hidden</view>
<checkbox checked="{{true}}">选择框</checkbox>
</view>
Page({
data:{
msg:'点击显示',
show:true
},
changename(){
if(!this.data.show){
this.setData({
msg:'点击显示',
show:true
})
return
}
this.setData({
msg:'点击隐藏',
show:false
})
}
})
.flex{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}

wx,但是hidden是隐藏的意思,true就是隐藏,这个和vue的逻辑是相反的

视图层循环展示内容#

循环语句

<view class="flex">
<view wx:for="{{list}}">
{{item.title}}
{{item.dec}}
</view>
</view>
Page({
data:{
list:[
{
title:'我是标题1',
dec:'描述1'
},
{
title:'我是标题2',
dec:'描述2'
}, {
title:'我是标题3',
dec:'描述3'
}
]
},
})

视图层代码的拆分#

这里是页面嵌入:include 不推荐

<view class="flex">
<view>header</view>
<include src="./content.wxml" />
<view>footer</view>
</view>
<view>content1</view>
<view>{{content}}</view>

include其实就把页面嵌入到另外页面中,这里{{content}}也是可以正常使用index.js定义的数据的

引入其他文件中的子模板:<template> 和 <import> 推荐

<view class="flex">
<view>header</view>
<import src="./content.wxml"/>
<template is="content" data="{{ content }}"/>
<view>footer</view>
</view>
<template name="content">
<view>content1</view>
<view>{{content}}</view>
</template>

组件&样式#

页面是由一个一个组件组成的,对于一些样式基本相同的组件,就可以封装成一个组件,供其他页面使用文档地址:自定义组件

样式尺寸单位:

  • 布局:使用 %、rpx、vw 等相对单位,实现自适应。
  • 字体:优先使用 px,保证字体大小稳定。
  • 媒体查询:针对平板、PC 等大屏幕,适当调整字体大小和布局。
  • Flex / Grid:配合相对单位,实现更加灵活的响应式布局。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

微信小程序常用Api
https://f.youzi177.cn/posts/2026102305-wei-xin-xiao-cheng-xu-chang-yong-api/
作者
小封鸭
发布于
2026-10-23
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
小封鸭
小楼一夜听春雨,深巷明朝卖杏花
公告
欢迎来到我的博客。这里主要记录前端全栈和日常内容
分类
标签
最新动态
站点统计
文章
60
分类
3
标签
12
总字数
107,734
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录