小程序开发常见问题
1.小程序如何实现页面间的跳转?
之前想在页面间做个跳转,想直接写在index.wxml中,类似于HTML中a标签的href属性,但没有看到官方的相关说明,官方以页面栈的方式维护了当前的所有页面,同时提供了一系列api供开发者使用,其中可以实现跳转的功能页面有5个。分别是:
(1)wx.navigateTo(OBJECT)
保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。注:目前页面路径对多只能十层。
(2)wx.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。
(3)wx.reLaunch(OBJECT)
关闭所有页面,打开到应用内的某个页面。
(4)wx.switchTab(OBJECT)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
(5)wx.navigateBack(OBJECT)
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。
最后通过小程序的事件机制实现了页面间跳转。
//index.wxml
<view class="usermotto">
<text class="user-motto" bindtap="goProductPage">{{motto}}</text>
</view>
//index.js
goProductPage: function (e) {
wx.navigateTo({
url: '../product/product', //相对路径
success: function () {
console.log('进入了成功的回调');
},
fail: function () {
console.log('进入了失败的回调');
}
})
}
2.小程序如何发布?
构建好自己的小程序后如何发布呢?自己在小程序的后台找了好久,只看到了下面这张图,后来才知道要在微信开发者工具中先提交代码,提交后在后台的“开发管理”菜单下的“开发版本”里看到对应版本,然后再提交审核即可,提交后可以看到“审核版本”里多了一条记录,一般审核要1-3天。
参考官方文档
3.怎样修改小程序的默认启动页面
在每个小程序的app.json页面会包含一个pages属性的配置项,该配置项是一个数组,每一项都是字符串,来指定小程序由哪些页面组成。每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。
所以修改该数组的第一项就修改了小程序的默认启动页面。
3.小程序要审核多久?
一般审核要1-3天。我的第一个小程序提交审核后第二天拿到了审核结果。审核失败后把具体原因提示给你,你根据具体原因修改后再提交即可。
4.如何改变小程序的标题?
wx.setNavigationBarTitle({
title: '附近门店'
})
5.如何调起扫一扫功能?
wx.scanCode({
success: (res) => {
console.log(res)
},
fail:(error) =>{
console.log(error)
}
6.能否设置导航条的字体?
在app.json文件里可以配置导航条字体的颜色和背景色,文字的大小无法改变。
{
"pages": [
"pages/productList/productList",
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "门店数字化营销",
"navigationBarTextStyle": "black"
}
}
7.小程序如何通过路由传递参数?
从列表页跳转到详情页
(1)在列表页(xxList.wxml)绑定事件
<view class="product-img" bindtap='goproductDetail' id="{{item.id}}">
<image src="{{item.imgSrc}}"/>
</view>
(2)在列表页(xxList.js)通过事件对象获取参数
goproductDetail:function(event){
let that = this;
let chosenPrdId = event.currentTarget.id
wx.navigateTo({
url: `../productDetail/productDetail?productId=${chosenPrdId}`,
success: function () {
wx.setNavigationBarTitle({
title: '产品详情'
})
},
fail: function () {
console.log('进入了失败的回调');
}
})
}
(3)在详情页(xxDetail.js)获取路由参数
onLoad: function (option) {
console.log(option.chosenPrdId); //选择的id
// TODO 访问后台接口查询具体信息
}
8.小程序如何发起请求?
wx.request({
url: 'http://127.0.0.1:3000',
data:{
userInfo: e.detail.userInfo
},
method:'GET',
header:{
'content-type': 'application/json' // 默认值
},
success:function(res){
console.log(res.data);
}
})
9.wx.request想要连接localhost怎么做?
在微信开发者工具--设置--项目设置--勾选不检验域名。(我的微信开发者工具版本是1.02.1806120,平台是ios)
10.小程序request请求方法为POST为什么访问不到,而get却可以?
开始以为是自己参数的问题,去网上找了很多答案,例如把header参数 'content-type':设为'application/x-www-form-urlencoded',不起作用,依然404。继续找,在一篇博文为中看到request的合法域名要是类似
https://XXX.com
这样的,不能是类似https://www.XXXX.com
这样的,看到这突然意识到可能是自己连接本地127的问题,于是在网上随便找了个https的post请求,报错400,提示参数格式不对,而不是接口找不到。
初次接触小程序,理解不正确的地方请多多赐教。