(總結)Weex若干特性總結分析

1.Weex是什麼?javascript

  背景:weex基於vue.js(2W+ star),由阿里團隊推出。是一款小巧輕量的前端開發框架,支持組件化和數據綁定。目前,尤雨溪以技術顧問的形式加入weex開發。weex目前在阿里已被用於去年天貓雙十一,並準備投入今年雙十一活動,有必定的業務實踐經驗。css

  核心思想:write once run everywhere && Native Speed in Native Platformhtml

  目前獲取資源的主要平臺:前端

    官網:https://alibaba.github.io/weex/vue

    Github:https://github.com/alibaba/weexjava

    weex中文社區:http://weex.help/ios

    weex 文章:  https://github.com/weexteam/article/issuesgit

       weex 調試: https://github.com/weexteam/article/issues/50github

       weex交流室: https://gitter.im/weexteam/cn?utm_source=share-link&utm_medium=link&utm_campaign=share-linkweb

     weex學習實踐指南:https://github.com/vczero/weex-learning

 

2.特性

  2.1語法

   

       每一個we文件由:<template>頁面結構、<style>界面樣式、<script>數據和邏輯組成。

  <template>:

   相似傳統HTML結構

  <style>:

  支持盒模型和flex佈局。樣式寫法:weex採用羊肉串的寫法:background-color,RN採用駝峯backgroundColor。  

  

  <script>:

   數據和邏輯

   分離思想對應傳統web的語法:原生的css、html、javascript的語法 語法學習成本較低。

   基於Vue的語法結構,與傳統web開發所遵循的結構樣式分離邏輯一致。模板可理解爲普通的html,數據綁定使用mustache風格,樣式直接使用css(實現了flexbox)。更接近經常使用的web開發方式,語法學習成本較低。

       目前weex的一些文檔比較少,但因爲基於vue,基本的語法可供參考vue文檔。如生命週期在weex文檔基本沒有論述,可結合vue進行學習。整體而言框架語法學習曲線較平緩

  2.2組件化

  Weex:組件(<template>頁面結構  <style>界面樣式  <script> 數據和邏輯)

  

  

  2.3 跨平臺特性 write once run everywhere

  實現原理:1)核心工具是transformer把weex的we文件轉換成純JS代碼;

  

  實現原理:2)在客戶端運行一個 JavaScript 引擎,隨時接收 JavaScript 代碼;在客戶端設計一套 JS Bridge,讓 native 代碼能夠和 JavaScript 引擎相互通訊。

web端的處理

 

        

 

    同構 HTML5 版本主要利用 JS Bridge、組件定義、API 定義方面的高度抽象—— HTML5 的版本在性能和體驗上有必定的劣勢,並非最理想化的效果。weex核心的主戰場仍是客戶端,但亦可降級到H5。

  2.4 數據綁定

  實現:採起了數據監聽+依賴收集(data binding + data change)的策略。沒有經過髒檢查,沒有經過全量 diff Virtual DOM 樹(和RN不一樣的方式。weex注重性能上的優化,相對RN有必定的性能提高。

3.環境搭建

   web端:簡單。weex **.we便可。基本按照demo文檔很快能夠運行出helloworld。參照:http://zct1989.oschina.io/2016/07/04/weex1/

   Android端:須要學習Android環境配置和Android項目結構,不然較易出錯。

  

  主要關注圖中紅色圈圈部分:第一個爲JS Bundle文件,其他爲需配置的Android文件。具體配置方法參考:http://smilevenus.com/2016/07/03/%E9%98%BF%E9%87%8CWeex%E6%A1%86%E6%9E%B6Android%E5%B9%B3%E5%8F%B0%E5%88%9D%E4%BD%93%E9%AA%8C/

  ios端:參照 http://blog.csdn.net/dongyu0729/article/details/52104194  http://weex.help/topic/57ada512a16ef6026b9c7595 或可利用weex提供的weexplayground軟件掃碼直觀看運行效果。(原理相似)

 4.調試工具

     weex devtools:weex debug 可同時檢查weex裏VDOM屬性、原生代碼調試、進行Javascript 代碼斷點調試,支持IOS和Android兩個平臺。與普通的chrome瀏覽器調試界面同樣。能夠在chrome查看,支持節點調試查看,支持真機調試。。https://github.com/weexteam/article/issues/50

  5 Demo展現

  以下Demo涉及如下幾點:

  1)組件化開發思路。Demo涉及tabbar,navigator,list,stream等內置組件,及其他自定義組件。採用標準格式設置module.exports後,每個we文件均可以做爲一個組件來require使用。模塊化和組件化進行的很完全。RN相似。

  2)List組件,可配置懶加載功能。採用recyclerview來實現。

  3)獲取後臺數據,採用stream模塊的fetch方法,知足平常須要。

  4)navigator實現頁面切換。weex也是基於路由棧的機制,可是需配置好js bundle地址。

  5)參數傳遞。可採用URL,父子組件,兄弟組件傳遞(採用dispatch和on方法。參見:)等方法。本demo採用URL傳遞。

  6)生命週期,created,相似RN的constructor(props)。weex文檔較少。但考慮到weex和RN的基本思想一致,能夠藉助RN來理解和使用weex。

    Demo展現(頻道頁,列表頁,Android上運行):

                  

  6 存在問題:

    主要是生態問題

    1). weex七月底所有開源完成。開源時間較晚。
    2). github目前有6k+ start,主要貢獻人員以阿里爲主,額外貢獻人較少。
    3). issue和pull request也比較少,社區目前規模比較小。
    4.) 文檔更新較慢,demo bug較多。
    5). KPI項目?部分開發者對阿里後續維護有所擔憂。
    但隨着weex的開源、vue做者尤的加入以及weex較優秀的跨平臺特性和在性能上的優化。社區前景可觀。

    SEO問題持續關注。

相關文章
相關標籤/搜索