1. 小程序开发中实用的小知识
1.1 屏幕适配与单位转换
在小程序开发过程中,屏幕适配和单位转换是一个不可避免的话题。小程序支持多种单位,如rpx、px、rem、em等,其中rpx是一种自适应单位,它可以根据屏幕宽度进行自适应。
在实际开发中,可以使用wx.getSystemInfoSync()方法获取屏幕信息,然后通过简单的计算来实现屏幕适配。下面是一个简单的例子:
const sysInfo = wx.getSystemInfoSync()
const screenWidthRpx = sysInfo.screenWidth // 获取屏幕宽度,单位rpx
const screenWidthPx = screenWidthRpx / 750 * wx.getSystemInfoSync().windowWidth // 转换为px
const ratio = screenWidthRpx / screenWidthPx // 计算rpx和px的比例
上面的代码中,screenWidthRpx代表屏幕宽度,单位为rpx;screenWidthPx代表屏幕宽度,单位为px;ratio则代表rpx和px的比例。
1.2 自定义组件
自定义组件是小程序中非常实用的功能,它可以将一些重复使用的代码封装成一个组件,方便代码的复用和维护。
自定义组件的开发步骤如下:
1. 在项目目录下新建一个文件夹,命名为components,用于存放自定义组件相关文件。
2. 在components目录下新建一个子文件夹,用于存放组件相关文件,如样式文件、js文件等。
3. 在上一步新建的子文件夹下新建一个以.wxml为后缀的文件,用于编写组件的结构。
4. 在上一步新建的子文件夹下新建一个以.js为后缀的文件,用于编写组件的逻辑。
5. 在需要使用自定义组件的页面.json文件中进行注册。
6. 在需要使用自定义组件的.wxml文件中进行引用。
下面是一个简单的例子:
在components目录下创建了一个名为my-component的文件夹,在这个文件夹下分别创建了一个以.wxml为后缀的文件和一个以.js为后缀的文件,其中,.js文件中需要对外暴露data、methods和properties对象,用于组件的数据和事件的绑定。
// my-component.js文件
Component({
data: {
name: 'my-component'
},
methods: {
handleClick() {
console.log('点击了my-component组件')
}
},
properties: {
text: {
type: String,
value: 'default value'
}
}
})
上面的代码中,data对象用于绑定组件的数据,methods对象用于绑定组件的事件,properties对象用于定义组件的属性。
1.3 setData方法
小程序中的页面数据是通过data对象来绑定的,当data对象中的数据发生变化时,页面也会随之更新。而setData方法可以动态修改data中的数据,从而触发页面的更新。
需要注意的是,使用setData方法更新数据时,需要将更新的数据放在一个对象中传递,而非单独传递一个值。下面是一个简单的例子:
Page({
data: {
message: 'Hello, World!'
},
handleButtonClick() {
this.setData({
message: 'Hello, Mini Program!'
})
}
})
上面的代码中,当点击按钮时,会调用handleButtonClick方法,该方法会通过setData方法更新message属性的值,从而触发页面的更新。
1.4 wx.request方法
在小程序中,需要与服务器进行交互,获取数据等。可以使用wx.request方法来实现网络请求。
wx.request方法接受一个对象作为参数,该对象包含了请求的相关信息,如url、method、header、data等。下面是一个简单的例子:
wx.request({
url: 'https://api.example.com/data',
method: 'GET',
success(res) {
console.log(res.data)
},
fail(err) {
console.log(err)
}
})
上面的代码中,当请求成功时,会调用success函数,并打印返回的数据;当请求失败时,会调用fail函数,并打印错误信息。
1.5 wx.navigateTo和wx.redirectTo方法
在小程序中,可以使用wx.navigateTo和wx.redirectTo方法来进行页面之间的跳转,其中wx.navigateTo会保留当前页面,而wx.redirectTo会关闭当前页面。
需要注意的是,跳转页面时,需要将页面路径放入跳转方法的参数中,路径以/开头。下面是一个简单的例子:
// 在当前页面跳转到pages/detail/detail页面
wx.navigateTo({
url: '/pages/detail/detail'
})
// 在当前页面关闭,跳转到pages/home/home页面
wx.redirectTo({
url: '/pages/home/home'
})
上面的代码中,分别演示了使用wx.navigateTo和wx.redirectTo方法来进行页面跳转。