1. 微信小程序开发入门:环境搭建与基础配置
首先,确保已安装微信开发者工具。打开工具,点击“新建项目”,选择“自定义开发”,填写项目名称和目录,点击“创建”。项目创建后,可在“项目设置”中配置AppID、昵称、头像等基本信息。
在项目目录下,找到`project.config.json`文件。此文件用于配置项目全局属性,如页面路径、窗口表现、多窗口等。以下是一个基础配置示例:
{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
}
}
此配置定义了两个页面路径和窗口样式。确保页面对应的路径正确,否则会导致页面无法打开。
2. 微信小程序开发中的常见错误:白屏问题排查
开发中常见白屏问题通常由以下原因引起:
- 页面对应的JSON配置文件错误或缺失
- wxml文件语法错误
- js文件中存在语法错误或逻辑导致渲染中断
- 网络请求失败导致数据未及时渲染
解决方法:使用微信开发者工具的“报错”面板查看具体错误信息。例如,若提示“找不到该页面的定义”,则检查`project.config.json`中的路径是否正确。
3. 微信小程序API使用:登录与用户信息获取
获取用户信息需要调用`wx.getUserProfile`接口。首先,在`app.js`中声明授权域:
App({
authorizationCode: 'snsapi_userinfo'
})
然后在页面中调用:
wx.getUserProfile({
desc: '用于完善会员资料',
success: (res) => {
console.log(res.userInfo);
}
})
注意:调用此接口前,必须在微信后台开通相关权限,并在页面显示授权提示。
4. 微信小程序性能优化:图片懒加载实现
长列表中大量图片加载会导致性能问题。可使用`wx.createLazyload`实现图片懒加载:
Page({
onReady() {
const query = wx.createSelectorQuery();
query.selectAll('.lazy-image').lazyLoad();
}
})
在wxml中,为图片添加`lazy-load`属性:
<image class="lazy-image" src="{{item.avatar}}" lazy-load>
此方法可显著减少初次加载时的内存占用和卡顿现象。
5. 微信小程序开发进阶:自定义组件开发
开发可复用的自定义组件,需创建包含`json`、`wxml`、`js`、`wxss`的目录。以下是一个基础组件示例:
{
"usingComponents": {}
}
在组件js中,定义数据和方法:
Component({
properties: {
title: String
},
data: {
count: 0
},
methods: {
increment() {
this.setData({ count: this.data.count + 1 });
}
}
})
在页面中使用时,需在`app.json`中注册组件:
{
"components": {
"my-counter": "/components/my-counter/my-counter"
}
}
然后直接引用:
<my-counter title="计数器"/>
6. 微信小程序API使用:网络请求优化
使用`wx.request`时,建议设置超时时间并处理各种状态码:
wx.request({
url: 'https://api.example.com/data',
method: 'GET',
header: {
'content-type': 'application/json'
},
timeout: 5000,
success: (res) => {
if (res.statusCode === 200) {
console.log(res.data);
}
},
fail: (err) => {
console.error('请求失败:', err);
}
})
对于频繁请求的场景,可使用`wx.setStorageSync`缓存结果:
const cachedData = wx.getStorageSync('apiData');
if (cachedData) {
console.log('使用缓存数据');
} else {
// 发起网络请求
}
7. 微信小程序开发进阶:多页面跳转与参数传递
使用`wx.navigateTo`实现页面跳转:
wx.navigateTo({
url: '/pages/detail/detail?userId=123&name=张三'
});
在目标页面中,通过`onLoad`获取参数:
Page({
onLoad(options) {
console.log(options.userId); // 123
console.log(options.name); // 张三
}
})
注意:跳转后无法返回上一级页面,需使用`wx.navigateBack`。
8. 微信小程序开发中的常见错误:授权问题处理
调用需要授权的API时,若用户未授权,会触发`auth deny`事件。可引导用户到设置页面开启权限:
wx.authorize({
scope: 'scope.userInfo',
success() {
wx.getUserProfile();
},
fail() {
wx.showModal({
title: '提示',
content: '需要授权才能使用该功能',
success(modalRes) {
if (modalRes.confirm) {
wx.openSetting();
}
}
});
}
})
此方法适用于需要多次引导用户授权的场景。
9. 微信小程序开发进阶:服务端渲染(SSR)实践
虽然微信小程序不支持传统SSR,但可通过以下方式模拟:
- 使用`wx.request`提前获取数据
- 在`onLoad`中根据数据渲染页面
- 对于列表页,使用`wx.createSelectorQuery`动态绑定数据
示例:获取商品列表数据:
Page({
data: {
products: []
},
onLoad() {
wx.request({
url: 'https://api.example.com/products',
success: (res) => {
this.setData({ products: res.data });
}
});
}
})
10. 微信小程序开发中的常见错误:跨域问题解决方案
小程序请求外部接口时,必须使用已配置白名单的服务器域名。在`app.json`中配置:
{
"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "images/home.png",
"selectedIconPath": "images/home-active.png"
}
]
}
}
若请求失败,检查域名是否在`wx.request`的`header`中设置正确的`origin`。