如何評價阿里巴巴飛冰(ICE)的 GUI 構建工具 ICEWORKS ?


首先先介紹下背景。在淘寶或者其他 BU 負責中後台業務的同學,應該都知道 ICE,因為在 16 年初我們就開始做 ICE,這個中後台解決方案至今已經兩年了

到昨天寫周報看了下數據,目前整個阿里集團有幾十個 BU 一共有 280+ 正式上線的項目在使用 ICE 的解決方案。當然主要還是淘寶占 85%,有些 BU 可能只有幾個。然後我們對於上線的定義,就是真正開發出來站點用來使用的,而不是自己測試玩的,這些後台可能對外、對商家,也可能對內對運營使用。

目前我們淘寶 FED 中後台產品團隊的主要業務就是中後台業務,其實早期大部分 ICE 的組件、功能都是從我們中後台業務中抽離出來的,說白了我們天天在實際使用 ICE 並反過來迭代 ICE。

=== 背景介紹完畢 ===

前面先介紹下背景,目的是想說明 ICE 這個產品,並不是為了迎合某些任務而強行研發或者開源的,它已經在內部跑了很久,而且 ICE 本身的開發者都是重度使用者。今年前端比較大的趨勢就是企業中後台和阿里集團 ISV 賦能,所以整合結合我們這兩年開發經驗和現有的資源,我們將一部分 ICE 的內容開放出來了

其實這個回答的標題描述有點問題,ICE 中的 GUI 構建工具其實名字是 iceworks,它只是 ICE 解決方案中的工程鏈路的工具。

ICE 最初的目的是為了賦能 Java 開發人員(因為在淘寶主要是開發同學寫運營後台)可以更快更好的開發業務需要的運營後台,從而解放前端生產力。所以在內部整個 ICE 包括下面幾大部分:

  1. 釘釘群實時答疑。500+ ICE 使用者在群里問任何層級的前端問題,我們都會及時響應甚至上門協助排查。開源版本我們針對活躍用戶和公司也會提供類似 VIP 服務。
  2. 學習平台。基於相關反饋等,我們專門為開發同學編寫的在線學習 JavaScript、React 等教程,相當於簡單的慕課網。
  3. React 組件。基礎組件我們使用 Fusion,此外根據業務特性等開發了 40+ 業務組件,目前開源版本我們的業務組件只開放了 4-8 個。
  4. 領域解決方案。比如淘寶內容發布器,其實是 ICE 的動態表單和富文本解決方案,支持任意內容類型發布功能。還有 app loader 方案,通過 loader 和單頁面,將多個代碼倉庫組合成一整個大站點,適用於多人跨團隊共同維護一個站點(例如阿里通信)等等。
  5. Playground。在線編碼、保存,用來快速試驗或者給開發同學寫 Demo 或者復現 BUG 等。
  6. 工程鏈路工具。類似 iceworks 但非 GUI 的命令行工程工具、腳手架等等。
  7. 還有線下培訓、夏天送雪糕(ice scream)活動等等

經過這一年多的研發,我們發現只是做到了 1.0,對於 2.0 (現在的開放版本)我們認為:

  1. 復用是開發提效第一生產力。組件、解決方案的復用能力有限,直接給出大塊代碼才更高效。讓開發自己拼接組件產出的效果,通常比較丑、代碼比較亂。——》我們的物料體系,包括 100+ 區塊、40+ 基礎組件、4+ 布局、2+ 模板。尤其是區塊,是我們 ICE 前端挨個抽象需求,交由 ICE 設計師設計,前端編碼實現出來的。這些還在持續優化、升級、補充。
  2. 命令行工具雖然是前端一直使用的,但並不代表是最佳選擇。尤其是開發人員,更喜歡用 IDE 自帶的 git 功能,而不是命令行的 git 工具。與此同時,使用前端工具,無疑要安裝大量的前端工具包,在開發前就被層層阻塞,再加上 webpack 配置。。。——》我們重新設計了工具工程鏈路,採用 GUI 客戶端的方式,內置整個前端環境,只需要下載、點擊就可以,webpack 等構建都不需要關心。專註於編寫業務邏輯,還有什麼比這個更簡單?

所以在現在對外開放的版本中,我們重點推出三個產品:

  1. ICE 物料體系:包括組件、區塊、布局、模板。整體基於 React,組件部分基於 Fusion(類似 Antd,即將開放),區塊、布局、模板是我們自己設計自己研發。
  2. ICE 工程體系:主要由 iceworks 這個工具承載,用來提供開發流程、腳手架生成、代碼構建等功能,連接線上物料和你本地項目。本身其實是跟物料解耦的。
  3. ICE Design:上面兩大塊產品需要一些統一的視覺風格,這是我們 ICE 設計師對於中後台的理解。

其他的就是一些站點、數據介面等周邊工具或者產品。

=== 未來 ===

目前我們還在快速迭代的公測期間。預計春節後我們將會正式發布,屆時可以生產可上線代碼和項目。

未來我們也會做企業私有化部署能力,因為每個企業中,很容易擁有自己的組件、代碼片段,但是缺少工程鏈路、站點等輔助服務。ICE 的幾塊產品是獨立解耦的,後面整條鏈路可以企業私有化部署,在自己內部使用。

至於 Vue 或者 jQuery 能不能放在 ICE 裡面用?jQuery 就算了,但是 Vue 這些在 iceworks 工程鏈路中是可以用的,本質上是構建腳本和區塊搭建等,未來會排期支持。但是 ICE 官方生產的物料是基於 React 的,無法混用,需要自己生產物料。

至於問的比較多的問題 Antd、Element 等 UI 組件跟 ICE 的主要區別,簡單的說,這些組件處于于 ICE 整體解決方案中的『物料體系』,屬於一種創建頁面的基礎物料。ICE 除此之外還擴展了工程鏈路等等。詳細的回答請移步:請問和ant-design最大的區別在哪? · Issue #66 · alibaba/ice

=== 最後 ===

幾位 ICE 的核心開發組成員也在知乎上:

大老闆: @元彥

前任 owner: @劉雄 他現在在做 ICE 大體系下另一套產品,後續會開放,敬請期待

工程鏈路: @noyobo

數據、構建、站點: @劉晨凌

物料體系: @chenbin92

有問題也可以直接聯繫諮詢。不過我們更推薦加入我們 github 上面的釘釘群,更加實時的交流。當然,有興趣上車的也可以私聊,我們現在正缺人 ^_^

我們的知乎專欄也已經創建好了,可以關注下,我們的正式版本、更新迭代、ICE 技術方案實現、React 經驗等,都會陸續分享出來。

ICE 知乎專欄?

zhuanlan.zhihu.com圖標

=== update ===

下面有個匿名回答但是把評論關掉了

這裡我要說明一下,整個淘寶的中後台產品需求和技術方案由 ICE 承擔,答疑、問題兜底也是由 ICE 團隊負責,這是一個大背景。

老闆的視角可能跟基層開發不太一樣,當你開發一個後台,你並不是一個自己玩玩或者搞完就完了的事情,如果遇到線上問題你是否能快速獨立解決?還是要到處搜索?當你不再維護這個項目,你的代碼別人接手之後能不能快速接起來?還是要重寫一遍?

但當你使用 ICE 的時候,你任何前端問題都可以在群里問我們,而且複雜問題我們會當面協助 debug 甚至幫你改代碼。而且我們的目標是淘寶所有開發都會寫 React 都具備前端技能,這樣在交接的時候,維護成本都會比較小。大家都把問題反饋過來,有助於協力 push 使其變得越來越好。

所以你也說了,這是被你們老闆勸說使用 ICE。ICE 團隊成員從來沒強迫別人使用過,甚至有個業務跟我們很相近的團隊,他們使用 Vue 開發後台。不過這樣遇到問題啥的只能他們自己去尋找解決方案,也無法使用現在這些 ICE 的物料以及我們後續的產品。


好久不上知乎了,發現評論那個匿名的回復里默認是不公開的?只能發到回復里:

可以看下我在github上的回復:請問和ant-design最大的區別在哪? · Issue #66 · alibaba/ice 說實話antd是什麼設計思想?我不是antd內部人士其實不是很了解,而且別人是什麼不是我們關注的,我們更關心能幫開發者解決什麼問題,他們的哪些問題我們現在還沒有關注到。

ICE 與 KPI 有關嗎?有關,而且是各位使用 ICE 體系的保障,因為我們衡量的關鍵指標是服務好了多少外部用戶。坦白說只是開源對團隊來說沒有挑戰,我們的挑戰是如何真正的服務好用戶,這樣的目標大家難道不鼓掌嗎?

有位同學對為什麼淘寶同學要求必須用 ICE 這個很不滿, 這個很道理簡單,自己狗糧必須自己吃,我們自己都不吃,怎麼能發現問題,怎麼讓外部用戶去吃。


「有位同學對為什麼淘寶同學要求必須用 ICE 這個很不滿, 這個很道理簡單,自己狗糧必須自己吃,我們自己都不吃,怎麼能發現問題,怎麼讓外部用戶去吃。」

看到ICE的負責人說出這麼一番話,真是呵呵!

-------分割線-------

ICE基本上是在淘寶大bu下使用的,而且是強制使用的。

之前組裡一個哥們有個管理後台的需求,本來打算用ant-design,後來被老闆一頓「教育」之後,只能改用淘寶內部生產的ICE了(當然,那時候還沒開源)。

至於開源這個事情,現在2月份了,馬上就3月底財年結束了,大家都懂的!!


只有阿里能用,也只有阿里會用。


感覺是在砸招牌,

1. 在gui里可以建頁面,不能刪,有去無回?

2.頁面里的組件只能改變上下,只能上下,只能上下,只能上下,。。。

3.點個預覽,一直在轉,卡死了?

半成品都不算,基本沒有實用價值


推薦閱讀:

如何做一個100+模塊的前端項目開發設計管理?
boi博文系列 - 基於webpack的css sprites實現方案
webpack 進階
躺下來聊聊前端自動化—node.js、npm、webpack、gulp這些鬼
CLI Tips #3:如何知道倉庫的代碼行數?

TAG:前端工程化 | React |