前端視角的WEEX入門

最近在看關(guān)于跨端開發(fā)的技術(shù)嵌器,出現(xiàn)在視野里較多的關(guān)鍵字React Native肛真、WEEX、Flutter爽航,不論宣傳的其他亮點再多蚓让,也掩蓋不了WEEX一份代碼三端運行的光芒乾忱,但真正想去入手的時候發(fā)現(xiàn)資料還真不多。這里總結(jié)下在學習WEEX過程中可能會發(fā)出的幾個疑問:

如何快速創(chuàng)建一個Weex應(yīng)用

官方提供了一個手腳架命令行工具weex-toolkit用于創(chuàng)建weex項目
全局安裝weex-toolkit
$ npm install -g weex-toolkit
創(chuàng)建一個項目使用create命令,按提示輸入創(chuàng)建項目
$ weex create my-project
具體也可參照官方提供的文檔快速上手

在WEEX中如何做頁面跳轉(zhuǎn)(多頁應(yīng)用)

WEEX中提供了一個內(nèi)置模塊navigator來來實現(xiàn)頁面切換历极。
頁面跳轉(zhuǎn)需要分端進行窄瘟,在h5中url為頁面鏈接,在移動APP中的url則為打包后生成的js bundle文件,已跳轉(zhuǎn)一個詳情頁為例
h5:

var navigator = weex.requireModule('navigator')
navigator.push({
      url: '/detail.html?id=xxxx',
      animated: "true"
});

Android or IOS

var navigator = weex.requireModule('navigator')
navigator.push({
      url: '/detail.js?id=xxxx',
      animated: "true"
});

可以通過weex.config.env.platform變量來獲取當前運行的平臺,當然在實際項目中這樣的跳轉(zhuǎn)方式太麻煩彼乌,因為這樣我們每個頁面切換都需要識別平臺识啦。
正確做法可以跟客戶端開發(fā)的同學商定跳轉(zhuǎn)協(xié)議,如客戶端攔截到/detail.html時自動去完成detail.js的下載并渲染蘸炸。

如何使用或擴展一個模塊

weex已經(jīng)內(nèi)置了部分模塊詳見weex內(nèi)置模塊
使用方法:

var module = weex.requireModule('模塊名')

注冊一個模塊
如果你引入了 weex-vue-render 這個庫,那么在全局能獲取到 weex 這個變量,其中提供了 registerModule 方法可以注冊模塊琼稻。

API格式

registerModule
name: {String} 必選,模塊名稱饶囚。
define: {Object} 必選帕翻,模塊的定義。
meta: {Object} 可選萝风,如果你需要將非 iterable 的屬性或方法注冊到模塊對象里嘀掸,你才需要用到這個參數(shù),將 { registerType: 'assignment' } 作為 meta 參數(shù)傳入即可规惰。
下邊注冊一個名為guide的模塊

import Vue from 'vue';
import weex from 'weex-vue-render';
weex.init(Vue);
weex.registerModule('guide', {
  greeting () {
    console.log('Hello, nice to meet you. I am your guide.')
  },
  farewell () {
    console.log('Goodbye, I am always at your service.')
  }
})

使用 guide模塊:

// 獲取模塊
const guide = weex.requireModule('guide')

// 可以直接調(diào)用模塊中的方法
guide.greeting()
guide.farewell()

當然如果代碼是跑在客戶端中那么需要客戶端同時實現(xiàn)并注冊名稱參數(shù)一樣的模塊以供調(diào)用睬塌。
需要說明的是,內(nèi)置模塊是可以重新注冊的歇万,也就是覆蓋注冊揩晴,比如內(nèi)置模塊modal中提供了toast方法,但樣式不滿足實際項目中的視覺需求贪磺,因此我們可以重新實現(xiàn)并覆蓋硫兰。

import Vue from 'vue';
import weex from 'weex-vue-render';
const modal = weex.requireModule('modal')
import toast from '@/components/common/Toast/index'
weex.init(Vue);

weex.registerModule('modal', {
  ...modal,
  toast
})

如何擴展內(nèi)置組件

以擴展 <sidebar> 為例,首先應(yīng)該編寫組件自身的邏輯:

<!-- sidebar.vue -->
<template>
  <div class="sidebar">
    <slot></slot>
  </div>
</template>

<style scoped>
  .sidebar {
    /* ... */
  }
</style>

<script>
  export default {
    props: [],
    data () {
      return {}
    }
  }
</script>

然后在使用之前寒锚,全局注冊 <sidebar> 組件:

import Vue from 'vue'
import weex from 'weex-vue-render'
import Sidebar from './path/to/sidebar.vue'
weex.init(Vue)
// 全局注冊 sidebar 組件
weex.registerComponent('sidebar', Sidebar)
// 或者使用 Vue.component
Vue.component('sidebar', Sidebar)

附上一個自己寫的的包含首頁劫映、列表頁、詳情頁|數(shù)據(jù)請求刹前、頁面跳轉(zhuǎn)的簡單demo
https://github.com/longyunxia/weex-demo

幾個實用的參考鏈接:

incubator-weex
Weex在達人店的一年實踐
weex傳參

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泳赋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喇喉,更是在濱河造成了極大的恐慌祖今,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異千诬,居然都是意外死亡撒踪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門大渤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來制妄,“玉大人,你說我怎么就攤上這事泵三「蹋” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵烫幕,是天一觀的道長俺抽。 經(jīng)常有香客問我,道長较曼,這世上最難降的妖魔是什么磷斧? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捷犹,結(jié)果婚禮上弛饭,老公的妹妹穿的比我還像新娘。我一直安慰自己萍歉,他們只是感情好侣颂,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枪孩,像睡著了一般憔晒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔑舞,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天拒担,我揣著相機與錄音,去河邊找鬼攻询。 笑死从撼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蜕窿。 我是一名探鬼主播谋逻,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呆馁,長吁一口氣:“原來是場噩夢啊……” “哼桐经!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浙滤,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤阴挣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纺腊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畔咧,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡茎芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了誓沸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梅桩。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拜隧,靈堂內(nèi)的尸體忽然破棺而出宿百,到底是詐尸還是另有隱情,我是刑警寧澤洪添,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布垦页,位于F島的核電站,受9級特大地震影響干奢,放射性物質(zhì)發(fā)生泄漏痊焊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一忿峻、第九天 我趴在偏房一處隱蔽的房頂上張望薄啥。 院中可真熱鬧,春花似錦逛尚、人聲如沸罪佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赘艳。三九已至,卻和暖如春克握,著一層夾襖步出監(jiān)牢的瞬間蕾管,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工菩暗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掰曾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓停团,卻偏偏與公主長得像旷坦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佑稠,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容