兩年前,我開始接觸 Vue.js 框架,當時就被它的輕量、元件化和友好的 API 所吸引。之後我將 Vue.js 和 Webpack 技術棧引入我的公司(TalkingData)視覺化團隊,並經過一年多的實踐,現已成為整個公司的前端開發規範。
與此同時,我開源了 iView 專案,它是基於 Vue.js 的一套高質量 UI 元件庫,從設計規範、工程構建到國際化都提供了完整的解決方案,並支援 SSR。在許多志願者的幫助下,將文件全部翻譯為英文,在 Vue 開發者社群頗受歡迎。
去年的 7 月 28 日,一個名叫 iView(github.com/iview/iview) 的工程立項了,今天正好是它一週歲生日。回想當初只是作為一個團隊元件庫來開發,風風雨雨經歷了一年,已經成為 Vue 社群最受歡迎的元件庫之一了,在 GitHub 也收穫了近 8000 Star,npm 每月有 10k 多安裝。當然,這一切的成果,都離不開公司給予我的支援和 Vue 社群的活躍。
既然是紀念日,就來點好玩的吧。我們重新裝飾了iView 官網,今天開始的一週裡,可以在首頁發彈幕,來和世界各地的朋友們一起暢(chě)聊(dàn)吧。
iView 一週年,對於開發者來說最好的訊息,就是我們終於釋出 2.0 的第一個正式版。在過去的 4 個多月裡,我們連續釋出了 19 個 rc 版,其實早可以釋出 2.0 正式版的,並在此基礎上迭代。遲遲不發,就是想把最好的一個版本帶給大家。當然,即使今天釋出了正式版,依然還有不少問題等待解決,一個好的元件庫是需要經歷不斷磨練。
來回顧一下,從 1.0 到 2.0,iView 有哪些重要改變:
最重要的當然是支援 Vue 2 了,其次支援了 SSR 和 Nuxt.js,對常用元件進行了擴充套件:Table 單元格的渲染基於 Vue 的 Render 函式,並支援展開;Select 支援遠端搜尋;Cascader 支援非同步和搜尋。還有 100 多項細節優化。2.0 正式版,更是加強了 Table元件,優化了其 8 個問題,所有的浮層類元件都增加了 transfer 屬性,可以選擇是否將其插入到 body 內,使用更靈活。具體的更新內容可以檢視更新日誌。
上個月,我們已將 iView 文件全部翻譯為英文,前前後後進行了 3 個多月才算完成。有了英文版後,更多的國外開發者也參與到 GitHub 討論之中,相信接下來會有更多來自國外的 contributors。
上圖是來自 Vue 社群一位國外開發者的評價。
英文版的翻譯離不開社群的貢獻,在此特別感謝 lcx960324、rijn 和 BigChief45 三位熱心志願者。
iView 從 2.0 版本開始,版本代號將以獲得過 Apple Design Awards 的遊戲或優秀的獨立遊戲來命名。
每個開源專案的版本代號都有它的故事。作為一枚熱愛 iOS 獨立遊戲的玩家,每每看到畫風精緻、劇情動人的好遊戲都會流連忘返,推薦給身邊的同事,所以用它來命名,也算是對獨立遊戲的一種支援。
2.x 的第一個版本(2.0)代號是 Leo's Fortune(里奧的財富)。
iView 已經很好地幫助前端開發工程師們加速完成中後臺業務開發,但作為一個有追求的大資料視覺化團隊,這僅僅只是一個開始。下半年,TalkingData 視覺化團隊將繼續開源兩個重磅級專案:
- InMap:基於 Canvas 和 WebGL 的地理資訊視覺化框架
- InChart:基於 Vue.js 和 eCharts 的圖表標準庫
這兩個專案都會給資料視覺化帶來福音,其中值得詳細介紹的是 InMap,事實上它的歷史要早於 iView,只是一直屬於閉源狀態,在 TalkingData 內部使用。這次也是鼓足了勁,在 API 和易用性上進行重構後開源。
在地理視覺化的過程中,因為地圖的向量資料不是一次性載入的,向量資料是隨著使用者的請求,隨著瓦片一起載入到本地的。在這個過程當中存在兩部分的計算比較多,限制了視覺化繪製的速度,一個就是各種資料的座標轉換,另一個就是各種資料的視覺化。目前 InMap 中使用了 web worker 在後臺對向量資料使用多執行緒計算,保證頁面對使用者響應的同時對各種資料進行計算,對於其他適合平行計算的座標資料採用 GPU 進行轉換。繪製視覺化層使用了 WebGL。
下圖是基於 InMap 實現的一個全 3D 地球,可以實現自傳、公轉、隨意拖拽旋轉、放大縮小等立體效果。
InMap 和 InChart 預計會在數月後和大家見面,敬請期待!
能夠完整參與一個開源專案,見證它從 0 到 1 的改變,對我來說確實是一件幸運的事,因為從這段開源經歷裡,學到了太多的知識,也結實了很多開發者。開源是一件很有意義的事情,然而很多國內開發者卻有一個不好的習慣,他們被統稱為“伸手黨”。相比很多國內開發者提出的 issues,我更喜歡去解答國外友人的英文 issues,這不是因為英文看起來有多高大上,而是國外朋友的提問都很友善,而且是經過深思熟慮的。在求知的態度禮帽上,這點國人做的確實不好,如果你 watch 了 iView 的專案,每天會收到幾十封郵件,其中大多沒有按照 issue guide 的要求來問,close 掉,還經常被罵,一陣負能量。試問,這些不按要求問題,還態度惡劣的人,你們為開源做過什麼貢獻呢?開源是免費,但不是說用了開源產品就是大爺,那麼牛逼,幹嘛不自己造輪子呢。
這樣的問題不僅僅發生在 iView 上,我同 VUX(知名移動端 Vue 元件庫) 的作者也深刻探討過,在 VUX 的社群也會帶有不少類似的負能量。這種不良現象在國內應該還有很多,VUX 的 readme 曾今寫的這段僅有的中文,正是寫給這部分人看的:
我相信提 issue 的朋友初衷都是好的,都是來解決問題的,只是聰明的、真正想解決問題的人,都會花費一些時間來認真填寫 issue 內容。付出就有回報,任何一個認真的提問,我也會認真的回答,而那些隨隨便便提的問題,連程式碼格式化也不會的也會被隨隨便便關掉。
開源是世界的,所以請善待 GitHub 社群。
從 2016 年下旬開始,TalkingData 的眾多新專案開始使用 iView,部分核心專案已逐步開始使用 iView 重構。以下是部分專案的截圖:
TalkingData 資料工程師 王祥:
上半年,部門的兩條重要產品線 App Analytics 和智慧資料市場 (SDMK),用 Vue+iView 完成了產品重構,效果顯著。下半年,其它幾個重要產品,也計劃引入 Vue+iView 技術棧。iView 的引入,保證了各產品線的視覺統一,設計師幾乎不需要參與到產品研發過程,降低了人力成本;工程師們可以更專注在業務上,避免了除了業務程式碼還要維護基礎的元件,極大的縮短了產品研發週期。強烈建議採用 Vue 技術棧的團隊,也嘗試下 iView。感謝 iView!
TalkingData 資料工程師 楊濤:
從使用 iView 0.9.x 版本到目前的 2.x 版本,見證了 iView 從實現各類元件到豐富元件功能的每一步,使得我們在團隊作戰中大大提高了專案開發效率。在我們的多個專案中使用了 iView 的各類元件,它完善的文件和示例程式碼降低了學習成本,同時 iView 也在高頻率的更新完善,選擇 iView 作為前端 UI 元件簡單易用大大加快了專案進度的同時更多的是感受到 iView 的工匠精神。
漢雲優品 產品經理 關靜凱:
我是一個愛搞技術的產品經理,在看到 iView 之後,被 iView 整體的 API 和 UX 設計所折服,非常容易上手,起初只是在產品設計上使用 iView 快速實現中後臺 Demo,iView 使產品的互動和 UI 保持了高度一致性,在對公司前端團隊培訓後,逐漸完成了前端工程化,現在公司的產品已經使用了 Vue.js 和 iView 進行了重構。iView 的原始碼非常規範,二次開發及其友好,目前正結合公司現有業務,進行了一些元件的新增,主要集中在資料視覺化和一些業務元件的封裝,iView 給公司帶來的不僅僅是前端技術的革新,更重要的是推動了產品迭代的速度,因為成功引入 iView,我也獲得了公司層面的支援整合設計和前端組建了 UED 部門。再次感謝iView 框架帶來的便利。
接下來要做的事情還有很多,我們會通過 iView 在大量實戰專案中的使用,在元件的易用性、穩定性上不斷提升和改良,也會在 UI 細節上更加規範、漂亮。
這裡也要特別感謝所有為 iView 專案付出努力的貢獻者們,一個好的專案,是需要大家共同創造和維護的。也藉此文,呼籲有工匠精神,熱愛開源的開發者們能夠加入到 iView 專案裡來,一起把它打造成世界級優秀元件庫。
為慶祝 iView 一週年暨 2.0 版釋出,Vue.js 系列課程一律 6.6 元,持續一週。
最後特別感謝以下技術社群長期以來對 iView 開源專案的推廣與支援(排名不分先後):