關於基於 Weex Virtual DOM API 造框架的一些遐想

小結一下最近的事情, 固然仍是關於 Weex 爲主,
晚飯前還跟同事扯淡說一夜寫一個 Weex 框架出來的可能性,
仍是實力不夠... 不過通過兩個晚上的加白天偷了點時間, Respo 算是跑通了,
最近須要熟悉 Weex 的 Virtual DOM API, 於是順帶花了大量時間,
我想說, 若是你想造個 Weex 框架, 能夠開始玩了...javascript

Weex Conf 結束後我就有把 ClojureScript 編譯過去的想法,
不過 Rax 是真讓我意外, 特別是英文社區對於 Rax 的關注程度,
但前端社區就是這樣, 你們永遠無法統一. 因此, 我發起了一個投票,
http://vote.weibo.com/poll/13...
結果你們已經看到了, Vue 和 React 的擁護者大概各有 1/3,
剩下當中, 10% 說想要 jQuery, 8% 說要自已造一個框架出來.
不管是 jQuery 仍是本身造框架, 這種可能性都很值得探索.前端

因而我就去探索了, 在官方倉庫的文檔裏翻到了 DOM API, 也翻到了例子,
後來個人例子還跑通了, 於是我對於這件事情仍是至關有信心的,
週二晚上整理了文章出來, 把大體的步驟都記錄了一下:
https://hashnode.com/post/run...
簡單說 Weex 環境是個 JavaScript 引擎, 去掉了 DOM API,
同時加上了 Weex 運行時所提供的一些 API, 以及全局對象.
這些 API 就像是一層 low level 的 IR, higher level 的 DSL 基於它們構建.java

細節看文章描述, 儘管是英文... 因爲模擬了 DOM API, 其實難度並不高,
並且多虧了 Weex Rax 在前面開路, 實際上我沒碰到什麼大問題.
但也有一些思考, 好比說基於單個 js 文件, 如今沒看到有合適的熱替換方案,
調試方面的 Weex 已經很贊, 但也有不完善的, cljs 的 SourceMap 我遇到坑了,
Weex Playground 的版本沒有統計升級, 跟源碼等各個地方短時間還有不一致,
目前官方彷佛都將精力放在 Weex 自己, Virtual DOM API 自己值得繼續挖掘.
而這樣一個環境, 其實值得引起更多咱們對已有的技術棧的思考和重構.node

回來扯一扯 ClojureScript 寫的 Respo, prototype 已經正常跑, 問題不大,
https://github.com/Respo/weex
個人主要工做是替換了 DOM API 和事件處理部分調用 API 和寫法,
同時因爲事件機制存在區別, 事件冒泡的代碼作了一些刪減,
ClojureScript 雖然依賴 Closure Library, 後者對 DOM 存在依賴,
可是從結果看, 僅僅是編譯的話不相關的代碼其實會被自動清除, 並不影響,
可是在熱替換方面, 模塊級別的熱替換難以作到, 這是個不小的遺憾,
我估計這也須要 ClojureScript 核心團隊下手才能解決, 我嘗試了, 段位不夠.git

另外一方面, 我也整理了一篇短文, 關於將 Virtual DOM 做爲 IR 的理解,
https://medium.com/@jiyinyiyo...
也趁機會和勾股交流了下想法. 我我的認爲 Virtual DOM API 價值更大,
若是能將這些 API 整理更明確一些, 對於構建生態更爲有利,
能夠想象, 一套工具鏈就像是鏈條, 須要不少人從等分的位置托起, 才能平穩,
而 IR 若是充實, 意味着中間的位置更加穩定, 可以承載更多的力量和玩法,
並且將來業務和性能優化的分離我認爲會更清晰, IR 對此也有助益.github

我我的卻是以爲 Weex Playground 挺好玩的, 已經像瀏覽器了,
想象一下之後到了商家, 掃碼, 點開商家的菜單, 而後就能看各類東西,
要是還能收藏... 我爲何要費事去手動輸入一個網址呢. 再說也不止二維碼.
Weex Conf 上午的 Keynote 也算是開了腦洞, 咱們的需求在不斷挑戰技術,
大廠們迫切須要旗下的各類夥伴快速製做大量的高性能的站點以及應用,
然而 Native 應用這麼多年, WebView 這麼多年, 拖慢了產品的節奏,
有人在研究技術讓生命延長, 同時也有人在研究技術在短暫的時間能感覺更多.瀏覽器

扯遠了. 我我的對 React 對 Vue 的好感都挺通常, 反而更但願 DOM API 更成熟,
其實如今 Weex 自己是 Vue 和 Weex runtime 的混合體, 工做量也挺大的,
總歸來講, 360+ 的人裏有 28 我的想本身寫框架, 其實也是不錯的事情,
我仍是蠻期待官方對於熱替換給出一些方案, 這樣能給框架開發者不少想象力,
固然在前方開路那也是極難的事情. 我也就寫到這裏吧...
考驗你們想象力和編碼能力的時刻到了, 趁老外還沒開始刷 Weex !性能優化

相關文章
相關標籤/搜索