iView 一週年了,同時發佈了 2.0 正式版,但這只是開始...

兩年前,我開始接觸 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 社區的活躍。laravel

彩蛋


既然是記念日,就來點好玩的吧。咱們從新裝飾了 iView 官網,今天開始的一週裏,能夠在首頁發彈幕,來和世界各地的朋友們一塊兒暢(chě)聊(dàn)吧。

2.0

iView 一週年,對於開發者來講最好的消息,就是咱們終於發佈 2.0 的第一個正式版。在過去的 4 個多月裏,咱們連續發佈了 19 個 rc 版,其實早能夠發佈 2.0 正式版的,並在此基礎上迭代。遲遲不發,就是想把最好的一個版本帶給你們。固然,即便今天發佈了正式版,依然還有很多問題等待解決,一個好的組件庫是須要經歷不斷磨練。git

來回顧一下,從 1.0 到 2.0,iView 有哪些重要改變:github

最重要的固然是支持 Vue 2 了,其次支持了 SSR 和 Nuxt.js,對經常使用組件進行了擴展:Table 單元格的渲染基於 Vue 的 Render 函數,並支持展開;Select 支持遠程搜索;Cascader 支持異步和搜索。還有 100 多項細節優化。2.0 正式版,更是增強了 Table組件,優化了其 8 個問題,全部的浮層類組件都增長了 transfer 屬性,能夠選擇是否將其插入到 body 內,使用更靈活。具體的更新內容能夠查看更新日誌web

聊聊英文版


上個月,咱們已將 iView 文檔所有翻譯爲英文,前先後後進行了 3 個多月纔算完成。有了英文版後,更多的國外開發者也參與到 GitHub 討論之中,相信接下來會有更多來自國外的 contributors。


上圖是來自 Vue 社區一位國外開發者的評價。

英文版的翻譯離不開社區的貢獻,在此特別感謝 lcx960324rijnBigChief45 三位熱心志願者。npm

版本號的故事

iView 從 2.0 版本開始,版本代號將以得到過 Apple Design Awards 的遊戲或優秀的獨立遊戲來命名。segmentfault

每一個開源項目的版本代號都有它的故事。做爲一枚熱愛 iOS 獨立遊戲的玩家,往往看到畫風精緻、劇情動人的好遊戲都會流連忘返,推薦給身邊的同事,因此用它來命名,也算是對獨立遊戲的一種支持。前端工程化

2.x 的第一個版本(2.0)代號是 Leo's Fortune(里奧的財富)。多線程

這只是開始

iView 已經很好地幫助前端開發工程師們加速完成中後臺業務開發,但做爲一個有追求的大數據可視化團隊,這僅僅只是一個開始。下半年,TalkingData 可視化團隊將繼續開源兩個重磅級項目:app

  • 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 開源項目的推廣與支持(排名不分前後):

相關文章
相關標籤/搜索