知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信小程序轉(zhuǎn)換uni-app詳細指南
發(fā)表時間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):168
本文首先分享轉(zhuǎn)換步驟和原理,文末會分享三方開發(fā)者制作的 小程序轉(zhuǎn)uni-app的轉(zhuǎn)換器 和 wepy轉(zhuǎn)uni-app轉(zhuǎn)換器 。
小程序轉(zhuǎn)換uni-app的步驟
微信小程序的語法,其實是vue.js語法的裁剪定制版,在數(shù)據(jù)綁定、自定義組件等很多方面都有相似之處。
以下是一個小程序源碼轉(zhuǎn)換步驟指南:
- 新建一個uni-app項目,把之前的app.js、app.wxss的代碼,挪到app.vue里,分別放到script和style節(jié)點下面
如果其中有g(shù)lobalData等全局變量或方法,也直接放到app.vue的script下
Page({
data: {
show1: false
}
})
現(xiàn)在
Page({
toggleActionSheet1() {
this.setData({show1: true});
}
})
現(xiàn)在
Page({
onLoad() {
console.log("page load");
}
})
現(xiàn)在
{ "pages": [ //pages數(shù)組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages {"path": "pages/dashboard/dashboard"}, { "path": "pages/action-sheet/action-sheet", "style":{ "navigationBarTitleText":"ActionSheet 上拉菜單", "usingComponents":{ //這里單頁面引入action-sheet組件 "van-action-sheet": "/wxcomponents/vant/action-sheet/index" } } } ], "globalStyle": { "navigationBarTitleText": "Vant For Uni-app", "usingComponents": { //這里給所有頁面全局引入了如下組件 "demo-block": "/wxcomponents/vant/demo-block/index", "van-button": "/wxcomponents/vant/button/index", "van-cell": "/wxcomponents/vant/cell/index", "van-cell-group": "/wxcomponents/vant/cell-group/index", "van-icon": "/wxcomponents/vant/icon/index", "van-loading": "/wxcomponents/vant/loading/index", "van-toast": "/wxcomponents/vant/toast/index" } } }
微信自定義組件雖然可以這樣轉(zhuǎn)換。但轉(zhuǎn)換后只能用于微信和App。如果想用于支付寶百度頭條,則需要新建swancomponents等目錄,將微信自定義組件復制到這些目錄,改造測試。雖然各小程序平臺均支持自定義組件,但細節(jié)有差異,仍需自己測試。無論如何,H5端不支持這些自定義組件。
比較妥善的跨端做法,是在uni-app插件市場尋找類似功能的vue組件,廢棄之前的小程序自定義組件。比如把wx-charts換成ucharts、把wx-parser換成uparser。
輔助工具
貢獻幾個替換用的正則
str = str.replace(/bindtap/g, '@onclick');
str = str.replace(/wx:if/g, 'v-show');
str = str.replace(/src=http://www.wxapp-union.com/'\{\{/g, ":src='");
str = str.replace(/wx\:key=\"\*this\"/g, ' ');
str = str.replace(/wx\:key\=\"index\"/g, ' ');
str = str.replace(/wx:for="{{/g, v-for= "(item,index) in ');
str = str.replace(/bindinput/g, '@input');
wx.
是否要替換為uni.
?
關(guān)于js api中的wx.
,不要全局替換為uni.
。因為有的wx的api是微信獨有的,替換為uni后,反而在微信下沒法用了。
同時uni-app編譯器提供了把wx.
編譯為不同平臺的機制,所以直接使用wx.
的api完全可以正常在各端運行。
所以對于老代碼,替不替換不重要,不影響運行,只影響語法提示和轉(zhuǎn)到定義。
但是新寫的代碼,還是要用uni.
的api,在代碼提示、轉(zhuǎn)到定義方面更強大。
如果把微信小程序轉(zhuǎn)換為uni-app,仍然用于發(fā)布微信小程序,那服務器端代碼不變。
但如果要發(fā)布到App、其他小程序等平臺,服務器也需要調(diào)整部分代碼。比如登陸、支付、推送、定位、地圖等聯(lián)網(wǎng)服務。
uni-app在客戶端側(cè)提供了統(tǒng)一的代碼,比如uni.login、uni.requestPayment,在不同端均可以實現(xiàn)登陸、支付。
但服務器端的接口不一樣,比如微信的App支付和小程序支付的申請開通、服務器接口都不一樣,所以配置和服務器接口仍需單獨處理。
比如把小程序轉(zhuǎn)換uni-app后,需要打包發(fā)布為app,則需要向微信申請app支付的資質(zhì),拿到appkey等信息,填寫到uni-app工程的 manifest-app -> sdk配置 -> 微信支付 下面,然后打包才能成效(如果是離線打包,參考離線打包的文件)。同時服務器需要按照微信的App支付的接口再開發(fā)對接。
同樣微信小程序里內(nèi)置的定位、地圖,在app上,需要單獨向高德等三方服務商申請,否則無法在app里使用這些服務。
這些sdk申請方式在 manifest -> app sdk配置 下有教程鏈接。
其他注意
參考:這里有一個轉(zhuǎn)換示例,把vant weapp的小程序演示demo,轉(zhuǎn)換為uni-app工程,里面的pages下同時保留了wxml和vue,可用于對比參考。http://ext.dcloud.net.cn/plugin?id=302
如果是mpvue的小程序,轉(zhuǎn)換uni-app很方面
export default {
globalData: {
text: 'text'
},
onLaunch: function() {
console.log('App Launch')
}
}
讀取globalData或賦值的方法是getApp().globalData.text = 'test'
- 5.1 之前js里面的data,放到新的data return下
之前
<script>
export default {
data() {
return {
show1: false
}
}
}
script>
之前
<script>
export default {
methods: {
toggleActionSheet1() {
this.show1 = true
}
}
}
script>
之前
<script>
export default {
onLoad() {
console.log("page load");
}
}
script>
this.setData({loading: false,areaList: response.data.data})
改為 this.loading = false;this.areaList = response.data.data
。 setData:function(obj){ let that = this; let keys = []; let val,data; Object.keys(obj).forEach(function(key){ keys = key.split('.'); val = obj[key]; data = http://www.wxapp-union.com/that.$data; keys.forEach(function(key2,index){ if(index+1 == keys.length){ that.$set(data,key2,val); }else{ if(!data[key2]){ that.$set(data,key2,{}); } } data = http://www.wxapp-union.com/data[key2]; }) }); }
以上代碼出處:https://ask.dcloud.net.cn/article/35020
- 屬性綁定從
attr="{{ a }}",改為 :attr="a"
title="復選框{{ item }}" 改為 :title="'復選框' + item" - 事件綁定從 bind:click="toggleActionSheet1" 改為 @click="toggleActionSheet1"
- 阻止事件冒泡 從 catch:tap="xx" 改為 @tap.native.stop="xx"
wx:if
改為v-if
- wx:for="{{ list }}" wx:key="{{ index }}" 改為`v-for="(item,index) in list"
之前引入的自定義組件,需要放到wxcomponents下,并在pages.json里注冊。如果這里有js,并且被其他代碼引入,要注意修改引用代碼的路徑指向。如下:
相關(guān)案例查看更多
相關(guān)閱讀
- 微信分銷
- 昆明小程序代建
- 網(wǎng)絡(luò)公司哪家好
- 昆明軟件公司
- 云南網(wǎng)站建設(shè)電話
- 模版信息
- 小程序模板開發(fā)公司
- 河南小程序制作
- 小程序開發(fā)
- 網(wǎng)站建設(shè)價格
- 報廢車回收管理軟件
- 云南微信小程序開發(fā)
- 云南小程序公司
- 小程序開發(fā)費用
- 網(wǎng)站建設(shè)公司哪家好
- 云南網(wǎng)站建設(shè)首選
- 正規(guī)網(wǎng)站建設(shè)公司
- 制作一個小程序
- 開發(fā)微信小程序
- 昆明做網(wǎng)站建設(shè)的公司排名
- 網(wǎng)站排名
- 網(wǎng)站上首頁
- 云南小程序開發(fā)
- 云南網(wǎng)站建設(shè)服務
- 汽車報廢回收軟件
- 大理小程序開發(fā)
- 網(wǎng)頁制作
- 開發(fā)制作小程序
- 云南網(wǎng)站建設(shè)價格
- 汽車報廢回收