知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
小程序開發(fā)不得不爬的坑,我替你爬過了!
發(fā)表時間:2021-1-6
發(fā)布人:葵宇科技
瀏覽次數(shù):96
不得不說,目前這個項目做的真是夠久,在開發(fā)過程中遇到了一些坑,解決了分享出來給大家。
在各方面綜合考慮之下,鄙人拋棄了各大多端開發(fā)框架,使用了 原生
的小程序框架進行開發(fā)。
前人掘坑、后人遭殃,祝各位早日成為大牛??!
自定義動態(tài)Tabbar導航欄
在默認的小程序開發(fā)中,定義tabbar
,需要在app.json
中配置如下json:
"tabBar": {
...
"list": [
{
"text": "首頁",
"iconPath": "/public/images/index.png",
"selectedIconPath": "/public/images/index-act.png",
"pagePath": "pages/job/index"
}
...
]
}
復(fù)制代碼
一經(jīng)配置,無法修改。你可以調(diào)用setTabBarItem
設(shè)置按鈕文字、圖片路徑;就是無法動態(tài)設(shè)置跳轉(zhuǎn)地址、tabbar個數(shù)。
解決方案
我們需要新建一個中間頁面
,用來控制所有tabbar,把tabbar要關(guān)聯(lián)的頁面,都用組件
的方式來寫,這樣,我們只要在這一個頁面里,寫個fix在底部的tabbar樣式,點擊不同tab,顯示不同組件。
json文件
{
"usingComponents": {
"home" : "/pages/job/index", // 首頁
"company" : "/pages/company/company", // 公司
"message" : "/pages/chat/index", // 消息
"mine" : "/pages/mine/index", // 我的
"tabbar" : "/milfun/widget/custom-tab-bar", //自定義tabbar組件
}
}
復(fù)制代碼
wxml文件
<!-- wxml中,把頁面設(shè)置成組件 -->
<home wx:if="{{activeTab == 'home'}}">首頁</home>
<company wx:if="{{activeTab == 'company'}}">公司</company>
<message wx:if="{{activeTab == 'message'}}">消息</message>
<mine wx:if="{{activeTab == 'mine'}}">我的</mine>
<!-- wxml中,自定義tabbar組件 -->
<tabbar list="{{tabList}}" bindmytab="tabChange"></tabbar>
復(fù)制代碼
js文件
Page({
data: {
activeTab:'home' // company 、message、mine
},
onLoad: function (options) {
let tmp = 1; // 用來控制顯示不同方案的tabbar
if( tmp === 1 ){ // 顯示第一套tabbar
this.setData({
tabList:[
{
"name": "...",
"text": "...",
"iconPath": "...",
"selectedIconPath": "...",
"pagePath": "..."
},
...
]
})
}else{ // 顯示第二套tabbar
this.setData({
tabList:[{},...]
})
}
}
})
復(fù)制代碼
上面展示的是中間頁面的寫法,那正常頁面如何改成組件頁面呢?
頁面改成組件寫法
其不同主要是在于js文件里面的寫法不同,所以我們只看js部分:
正常寫法
Page({
data: {
},
onLoad: function (options) {
},
onShow: function (options) {
},
func1:function(e){
console.log(e)
},
func2:function(e){
console.log(e)
},
})
復(fù)制代碼
組件寫法
Component({
options: { // 為了使用全局css樣式
addGlobalClass: true,
},
data: {},
/*
* 組件被創(chuàng)建時調(diào)用,等同于上方的 onLoad
*/
attached: function (options) {
},
/*
* 組件內(nèi)部方法,等同于上方的自定義方法
*/
methods: {
func1:function(e){
console.log(e)
},
func2:function(e){
console.log(e)
},
}
})
復(fù)制代碼


輸入框彈起頁面上滑
遇見上面這個問題,我們的解決方案是:手動設(shè)置輸入框位置。
js文件
// 輸入框獲取焦點
foucus:function (e) {
this.setData({typerHeight: e.detail.height})
},
// 輸入框失去焦點
blur:function () {
this.setData({typerHeight: 0})
},
復(fù)制代碼
wxml文件
<view class="tc-board" style="bottom:{{typerHeight}}px" >
......
</view>
復(fù)制代碼
這樣,當輸入框獲取焦點時,會獲取到鍵盤的高度,然后把輸入框這個view的bottom樣式,設(shè)置成你獲取的高度,就完美的貼在輸入框上方。當輸入框失去焦點時,高度設(shè)置成0,輸入框view又回到了頁面的底部。
異步請求回調(diào) + Token驗證
為了避免在業(yè)務(wù)中書寫繁雜的if else語句嵌套,或者回調(diào)函數(shù)
// 方法一
onLoad:function (e) {
// if嵌套
if(){
if(){
if(){ // do something }
}
}
// 回調(diào)陷阱
func1(data,func(){
func2(data,func(){
func3(data,func(){
// do something
})
})
})
},
復(fù)制代碼
我的做法是,為方法添加promise,舉個栗子
相關(guān)案例查看更多
相關(guān)閱讀
- 云南做軟件
- 汽車回收系統(tǒng)
- 用戶登錄
- web學習路線
- 搜索引擎優(yōu)化
- APP
- 汽車報廢回收管理軟件
- 模版信息
- 退款
- 云南網(wǎng)站建設(shè)制作
- 前端
- 小程序的開發(fā)公司
- 網(wǎng)站建設(shè)百度官方
- 二叉樹
- 報廢車拆解管理系統(tǒng)
- 昆明軟件公司
- 昆明網(wǎng)站開發(fā)
- 搜索引擎排名
- 云南網(wǎng)絡(luò)公司
- 報廢車管理系統(tǒng)
- 報廢車拆解回收管理系統(tǒng)
- 云南小程序公司
- flex
- 小程序開發(fā)公司
- 小程序技術(shù)
- 云南小程序被騙
- web教程
- 開通微信小程序被騙
- 云南網(wǎng)站建設(shè)一條龍
- 微分銷