關(guān)于Weex你需要知道的一切
QCon第一天,GMTC全球移動技術(shù)大會聯(lián)席主席、手淘技術(shù)老大莊卓然(花名南天)在Keynote上宣布跨平臺開發(fā)框架Weex開始內(nèi)測,并將于6月份開源,同時他們也放出官網(wǎng):http://alibaba.github.io/weex/ ,可以在上面申請內(nèi)測資格,以及下載Android版Demo把玩。
在大會后我對莊卓然做了一個采訪,對一些大家關(guān)心的問題得到官方的回復(fù),整理在這里。所有該發(fā)的不該發(fā)的我都發(fā)在這兒了,為了漲粉我也是拼啦~
Weex基本信息
官方支持iOS、Android、HTML5.
Write Once, Run Everywhere。一次編寫可生成三平臺代碼。
DSL模板學(xué)習超簡單,直接寫HTML、CSS、JS。這意味著可以直接用現(xiàn)有編輯器和IDE的代碼補全、提示、檢查等功能。
輕量級、可擴展、高性能。
集成花樣多,可在HTML5頁面嵌入,也可嵌在原生UI中。
Weex的由來
Weex的前身是WeApp,一個用JSON配置原生UI組件來實現(xiàn)動態(tài)化的框架,關(guān)于類似這個的思想,可以在天貓這篇配置中心實踐中看到,已經(jīng)很牛了,Weex是WeApp的進化版本,加上ex去掉App,就成了現(xiàn)在這個名字。他們還編了個段子:
You give us a few weeks, so we bring you a weex.
這個段子要表達的意思,你get到了嗎?
與Vue.js的關(guān)系
如果對前端有所涉獵的同學(xué)會發(fā)現(xiàn),Weex的DSL風格與一個前端的MVVM框架Vue.js比較像,那么它們的關(guān)系是什么呢?
Weex由多個關(guān)鍵模塊組成,分別是DSL transformer、JS Framework、HTML5/iOS/Android Renderer和工具鏈 , 其中JS Framework就直接使用了部分來自Vue.JS的代碼。不過這種使用也是遵守開源協(xié)議的(Vue使用MIT協(xié)議,Weex使用Apache協(xié)議),Weex團隊在源碼的說明文件中記錄了來自Vue.JS和其他開源項目的貢獻。
為什么不用React Native
手淘和天貓曾經(jīng)嘗試過React Native,然后放棄了。但是把它的思想吸收過來,結(jié)合Web Component和Vue.js,然后就成了Weex.
關(guān)于這個問題,莊卓然列舉了一些原因:
因為手淘之前有WeApp,從WeApp進化到Weex是很自然的選擇,拋棄自己的解決方案去用別人的反而很奇怪。
React Native的JSX、CSS in JS寫法都很別扭,淘寶有很多ISV(即各種店鋪),他們之前只會Web技術(shù),寫這個有門檻。另外,HTML標準在過去二十年內(nèi)經(jīng)受了檢驗,HMTL/CSS/JS對應(yīng)的結(jié)構(gòu)、樣式和行為,天然分離,代碼的可維護性會更好。拋棄標準自己發(fā)明DSL也不明智。
React Native重視平臺獨立性,不能做到100%代碼共用,實際上還是要學(xué)習各平臺的特性,Weex希望做到100%共用,即一次編寫到處運行,進一步降低開發(fā)門檻。
React Native在一些地方的性能上還有問題,手淘希望能自己主導(dǎo)優(yōu)化的進程,否則會很被動。
關(guān)于KPI項目
去年在手淘向外界宣布有這個項目的時候,引起大家的關(guān)注,有人在知乎提了個問題,有人回答說是KPI項目云云。所謂KPI項目,就是為了完成KPI而做的項目,但實際之后不維護等等。
手淘在這個問題下面并沒有正式回應(yīng),據(jù)莊卓然表示,其實KPI項目看從什么維度去理解,任何一家公司去做一個創(chuàng)新都會有目標,有目標的話都可以被理解為是一個KPI項目。在他的角度來看,是不是KPI項目不重要,重要的是目標定得對不對,想解決的問題是不是核心問題。
關(guān)于維護,涉及到阿里現(xiàn)在的開源策略,我們看下一個問題。
為什么還要內(nèi)測,不直接開源?
其原因是,阿里調(diào)整了開源策略。在過去,阿里集團開源了不少項目,但其中很多沒有后續(xù)維護,這也是被詬病為KPI項目的原因之一。其實阿里自己也想改變這種情況。
現(xiàn)在,手淘做開源,希望真正為社區(qū)創(chuàng)造價值,而不是把公司的一坨代碼處理一下往外一丟,別人在使用的時候還要花很多功夫處理,這樣的開源項目意義并不大。阿里希望發(fā)布出去的開源項目都是有生命的,能好好的維護起來。
在Weex去年雙十一在線上驗證之后,其實就準備開源,但有很多準備工作要做,比如文檔、配套的工具等等,過去的四個多月一直在做這些事情。在集團內(nèi)部也進行過測試,集團BU、UC包括高德、天貓等都有很多同學(xué)參與進去貢獻DEMO和代碼,到了4月份覺得適合放出來了,所以宣布內(nèi)測。
內(nèi)測這個是類似產(chǎn)品運營的思路,希望能像打造產(chǎn)品一樣打造開源項目,和一般的開源項目的快速迭代不太一樣,目前來看也并不能說哪個更好。
阿里百川在6月份會有一個生態(tài)大會,面向阿里生態(tài)體系內(nèi)的商家和客戶,當然也包括開發(fā)者。到時候會在大會上宣布開源。
阿里百川(baichuan.taobao.com)是阿里巴巴集團“云”+“端”的核心戰(zhàn)略是阿里巴巴集團無線開放平臺,基于世界級的后端服務(wù)和成熟的商業(yè)組件,通過“技術(shù)、商業(yè)及大數(shù)據(jù)”的開放,為移動創(chuàng)業(yè)者提供可快速搭建App、商業(yè)化APP并提升用戶體驗的解決方案;同時提供多元化的創(chuàng)業(yè)服務(wù)-物理空間、孵化運營、創(chuàng)業(yè)投資等,為移動創(chuàng)業(yè)者提供全面保障。