上週,Megalo@0.2.0 正式發佈,優化了數據更新性能的同時,支持了百度智能小程序,着實激動了一把,這「可能」是目前社區裏第一個同時支持三端小程序的 vue 小程序框架。下面咱們就來試試他的效果。css
官方文檔的第一部分就是快速入門,順藤摸瓜,構建一個 megalo 項目。vue
$ npm install -g @megalo/cli
複製代碼
$ megalo megalo-yanxuan-demo
複製代碼
以微信小程序爲入口git
$ npm run dev:wechat
複製代碼
至此一個完整的 megalo 項目就構建好了,接下來咱們開始轉移源碼github
我從之前 weex 的 demo 項目,yanxuan-weex-demo,爲基礎進行轉移,轉移過程當中涉及到不少 weex 特有的 api 的移除和轉換。vue-router
以網絡請求爲例,weex 是使用的 streamshell
let stream = weex.requireModule('stream');
export default {
methods: {
GET (api, callback) {
return stream.fetch({
method: 'GET',
type: 'json',
url: api
}, callback)
}
}
}
複製代碼
由於小程序都有提供網絡請求的 API,因此此處對此進行改造,以下npm
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
})
}
}
}
複製代碼
相似的還有 toast、message 等組件的改造。json
因爲 weex 中的 <recycle-list>
、<loading>
、<refresh>
、<scroller>
等組件在小程序組件內是不存在的,因此有三種解決方案小程序
好比 weex 的 <slider>
組件,能夠用小程序的 <swiper>
替換,好在微信、支付寶和百度小程序都有支持。微信小程序
Weex 容器默認的寬度 (viewport) 是 750px,小程序以 750rpx 爲基。因此直接將須要的 px 轉換成 rpx。
另外本身實現了 1 像素的 wpx,替換成 px 便可。
最後看下改造效果。同時執行三端
效果比預想的要好,沒有過多的適配出錯
demo 源碼拋給你們供你們把玩。
只要現有工程沒有作如下幾件事,理論上,都是能夠轉移的,只須要稍微更新一下格式
- 使用 megalo 暫不支持的 vue 特性
- 涉及瀏覽器特有的 dom 操做,window、userAgent、location、getElementById 等
- 使用第三方組件庫且該組件庫使用了 dom 操做
- 使用了 vue-router,暫不支持
不過,方案都是能夠調整的,以上功能在社區都可以找到替代方案。
換之便可。
《Megalo 官方文檔》 《megalo -- 網易考拉小程序解決方案》 《Megalo github》
做者:木羽
轉載請標明出處