WeexFramwork

介紹

Weex 是一套簡單易用的跨平臺開發(fā)方案泻轰,能以 web 的開發(fā)體驗(yàn)構(gòu)建高性能莉御、可擴(kuò)展的 native 應(yīng)用,為了做到這些匙奴,Weex 與 Vue 合作堆巧,使用 Vue 作為上層框架,并遵循 W3C 標(biāo)準(zhǔn)實(shí)現(xiàn)了統(tǒng)一的 JSEngine 和 DOM API泼菌,這樣一來恳邀,你甚至可以使用其他框架驅(qū)動 Weex,打造三端一致的 native 應(yīng)用灶轰。

就是說 Weex 是一個殼,定義了一些 協(xié)議刷钢,可以使用其他 framework 來實(shí)現(xiàn)它笋颤。

Web 的開發(fā)體驗(yàn),native 的體驗(yàn)内地。

優(yōu)點(diǎn)

  • 統(tǒng)一三端 web開發(fā)體驗(yàn)
  • 分包下載
  • 多 framework
  • 擴(kuò)展

目錄

  • 整體架構(gòu)
  • 概念
  • 源碼目錄說明
  • weex-vue-framework 初始化
  • 加載 JSBundle
  • 多個 framework 共存

整體架構(gòu)

流程圖
流程圖

運(yùn)行環(huán)境

iOS 運(yùn)行在 JSCore伴澄,Android 運(yùn)行在 UC 開發(fā)的 v8 內(nèi)核。

客戶端 JavaScript 引擎

Weex 的 iOS 和 Android 客戶端中都會運(yùn)行一個 JavaScript 引擎阱缓,來執(zhí)行 JS bundle非凌,同時向各端的渲染層發(fā)送規(guī)范化的指令,調(diào)度客戶端的渲染和其它各種能力

  • 解析 JSBundle 代碼
  • 和 native 通信
  • 單例模式

native 渲染

iOS荆针、Android 都基于 DOM 模型設(shè)計(jì)并實(shí)現(xiàn)了標(biāo)準(zhǔn)的界面渲染接口供 JavaScript 引擎調(diào)用敞嗡。
并且結(jié)合 web 標(biāo)準(zhǔn)和 native 的特點(diǎn)和優(yōu)勢實(shí)現(xiàn)了一套統(tǒng)一的組件和模塊。

  • 基于 DOM 模型
  • 默認(rèn)一組 組件和 模塊
  • 支持 擴(kuò)展

web 渲染

使用 Vue2.0 開發(fā)航背, Vue 本身就支持跑在 web 平臺喉悴,所以只要 引用了
Vue 庫和 weex 封裝的 Vue 組件庫就可以了。

  <script src="../node_modules/vue/dist/vue.runtime.js"></script>
  <script src="../node_modules/weex-vue-render/dist/index.js"></script>

渲染流程

render flow
render flow

Weex 渲染流程

  1. 虛擬DOM.
  2. 構(gòu)造樹結(jié)構(gòu). 分析虛擬DOM JSON數(shù)據(jù)以構(gòu)造渲染樹(RT).
  3. 添加樣式. 為渲染樹的各個節(jié)點(diǎn)添加樣式.
  4. 創(chuàng)建視圖. 為渲染樹各個節(jié)點(diǎn)創(chuàng)建Native視圖.
  5. 綁定事件. 為Native視圖綁定事件.
  6. CSS布局. 使用 css-layout 來計(jì)算各個視圖的布局.
  7. 更新視窗(Frame). 采用上一步的計(jì)算結(jié)果來更新視窗中各個視圖的最終布局位置.
  8. 最終頁面呈現(xiàn).

作用

  1. 管理每個Weex instance實(shí)例的生命周期玖媚。
  2. 不斷的接收Native傳過來的JS Bundle箕肃,轉(zhuǎn)換成Virtual DOM,再調(diào)用Native的方法今魔,構(gòu)建頁面布局勺像。
  3. 響應(yīng)Native傳過來的事件障贸,進(jìn)行響應(yīng)。

vdom吟宦、instance篮洁、component、module

關(guān)于 vdom督函、instance嘀粱、component、module 的說明
概念

多個 framework 共存

weex 可以支持多個 framework 來驅(qū)動 weex辰狡。例如 之前的 weex-js 和現(xiàn)在的 vue

目前 源碼中 有 4個 framework:

export default {
  Vanilla,  Vue,  Rax,  Weex
}

定義一個 framework 需要實(shí)現(xiàn)下面的方法:

init
registerComponents
registerModules
registerMethods
prepareInstance
createInstance
refreshInstance
destroyInstance
getRoot
receiveTasks

簡單理解 定義一個framework就是

  1. 實(shí)現(xiàn)上面的方法
  2. 實(shí)現(xiàn) 解析 js 代碼锋叨,適配到 weex 定義的 vdom。

源碼目錄說明

說明

初始化

初始化

TODO:

1.Weex JS Framework 初始化
2.Weex JS Framework 管理實(shí)例的生命周期
3.Weex JS Framework 構(gòu)建Virtual DOM宛篇,既 loadJSBundle
4.Weex JS Framework 處理Native觸發(fā)的事件
5娃磺、數(shù)據(jù)綁定

js 與 native 交互

js 與 native 交互

加載 JSBundle

loadJSBundle

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叫倍,隨后出現(xiàn)的幾起案子偷卧,更是在濱河造成了極大的恐慌,老刑警劉巖吆倦,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件听诸,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚕泽,警方通過查閱死者的電腦和手機(jī)晌梨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來须妻,“玉大人仔蝌,你說我怎么就攤上這事』睦簦” “怎么了敛惊?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绰更。 經(jīng)常有香客問我瞧挤,道長,這世上最難降的妖魔是什么儡湾? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任皿伺,我火速辦了婚禮,結(jié)果婚禮上盒粮,老公的妹妹穿的比我還像新娘鸵鸥。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布妒穴。 她就那樣靜靜地躺著宋税,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讼油。 梳的紋絲不亂的頭發(fā)上杰赛,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音矮台,去河邊找鬼乏屯。 笑死,一個胖子當(dāng)著我的面吹牛瘦赫,可吹牛的內(nèi)容都是我干的辰晕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼确虱,長吁一口氣:“原來是場噩夢啊……” “哼含友!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起校辩,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤窘问,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宜咒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惠赫,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年故黑,在試婚紗的時候發(fā)現(xiàn)自己被綠了汉形。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡倍阐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逗威,到底是詐尸還是另有隱情峰搪,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布凯旭,位于F島的核電站概耻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏罐呼。R本人自食惡果不足惜鞠柄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫉柴。 院中可真熱鬧厌杜,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匙握,卻和暖如春咆槽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背圈纺。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工秦忿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛾娶。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓灯谣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茫叭。 傳聞我的和親對象是個殘疾皇子酬屉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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