上周,Megalo@0.2.0 正式發(fā)布,優(yōu)化了數(shù)據(jù)更新性能的同時(shí),支持了百度智能小程序,著實(shí)激動(dòng)了一把,這“可能”是目前社區(qū)里第一個(gè)同時(shí)支持三端小程序的 vue 小程序框架。下面我們就來(lái)試試他的效果。
官方文檔的第一部分就是快速入門,順藤摸瓜,構(gòu)建一個(gè) megalo 項(xiàng)目。
$ npm install -g @megalo/cli 復(fù)制代碼
$ megalo megalo-yanxuan-demo 復(fù)制代碼
以微信小程序?yàn)槿肟?/p>
$ npm run dev:wechat 復(fù)制代碼
至此一個(gè)完整的 megalo 項(xiàng)目就構(gòu)建好了,接下來(lái)我們開(kāi)始轉(zhuǎn)移源碼
我從以前 weex 的 demo 項(xiàng)目, yanxuan-weex-demo ,為基礎(chǔ)進(jìn)行轉(zhuǎn)移,轉(zhuǎn)移過(guò)程中涉及到很多 weex 特有的 api 的移除和轉(zhuǎn)換。
以網(wǎng)絡(luò)請(qǐng)求為例,weex 是使用的 stream
let stream = weex.requireModule('stream'); export default { methods: { GET (api, callback) { return stream.fetch({ method: 'GET', type: 'json', url: api }, callback) } } } 復(fù)制代碼
因?yàn)樾〕绦蚨加刑峁┚W(wǎng)絡(luò)請(qǐng)求的 API,所以此處對(duì)此進(jìn)行改造,如下
export default { methods: { GET (api, callback) { let { platform } = this.$mp || {}, request = ()=>{} switch(platform) { case 'wechat': request = wx && wx.request break; case 'alipay': request = my && my.httpRequest break; case 'swan': request = swan && swan.request break; default: break; } request && request({ url: api, success: callback }) } } } 復(fù)制代碼
類似的還有 toast、message 等組件的改造。
由于 weex 中的 <recycle-list> 、 <loading> 、 <refresh> 、 <scroller> 等組件在小程序組件內(nèi)是不存在的,所以有三種解決方案
比如 weex 的 <slider> 組件,可以用小程序的 <swiper> 替換,好在微信、支付寶和百度小程序都有支持。
Weex 容器默認(rèn)的寬度 (viewport) 是 750px,小程序以 750rpx 為基。所以直接將需要的 px 轉(zhuǎn)換成 rpx。
另外自己實(shí)現(xiàn)了 1 像素的 wpx,替換成 px 即可。
最后看下改造效果。同時(shí)執(zhí)行三端
效果比預(yù)想的要好,沒(méi)有過(guò)多的適配出錯(cuò)
demo 源碼 拋給大家供大家把玩。
只要現(xiàn)有工程沒(méi)有做以下幾件事,理論上,都是可以轉(zhuǎn)移的,只需要稍微更新一下格式
不過(guò),方案都是可以調(diào)整的,以上功能在社區(qū)均可以找到替代方案。
換之即可。