為什麼 Vue 更符合這個時代的大勢所趨?

徐九發表於2020-06-16

clipboard.png

技術編輯:徐九丨發自 SegmentFault 思否


不久前,尤雨溪釋出了 Vue 3.0 Beta 版本。

釋出之後我們對社群裡的前端開發者做了一次調查溝通,大家普遍認為 Vue 已經具備了商業專案開發的必備條件,如語法精煉、優雅而簡潔、程式碼的可讀性高、成熟的元件模組化能夠讓開發者從編碼中獲得樂趣等等,當然,還有商業專案開發最為看重的與第三方控制元件的結合能力。

正是這些能力,確保了“後浪” Vue 能夠與 React、Angular 等老牌前端開發框架並駕齊驅,在國內開發者當中佔據越來越重要的位置,逐漸有發展成為國內三大前端框架之首的趨勢。

不過,在讀者看來,Vue 作為近幾年發展最快的 JS 框架, 其崛起主要原因不單單是因為粉絲的過度追捧,也並不是因為某個大公司的權威推動。和 React、Angular 相比,Vue 在可讀性、可維護性和趣味性之間做到了很好的平衡,結合我們之前為大家推薦過的純前端表格控制元件 SpreadJS,有使用者表示僅通過一週的自學就搞出來了一個可供企業內部使用的表格協同文件系統。

本文我們將通過分析 Vue 的特性,談談為什麼商業專案開發我更推薦 Vue,而不是 React 和 Angular。

Vue、React、Angular 優勢對比

clipboard.png

這個對比表應該可以代表大部分人對於三大前端框架的理解。

React 的靈活性很高,這就決定了它的上限也很高。但 React 相對於 Vue,規矩更多,為了讓專案程式碼等規矩更有條理性,需要更多的程式碼來實現,假如有一天我們不再依賴一大堆 npm 包和 ES5 編譯器,要做出 React 應用簡直是難如登天。

而相比 React 所強調的所謂 JS 純淨性和程式碼可讀性,Angular 的確算得上一款優秀的前端框架。Angular 可以幫助我們快速進入開發,在程式碼的頭一千行,我們會感到很有趣,但在那之後,程式碼將開始變得糟糕起來。大部分時間,你都會迷失在各種指令和作用域裡,程式碼管理難度將會勸退大部分新來的開發人員。

因此,Angular 的主要問題就是太難了,入門難、做專案也難,哪怕是個資深的前端工程師也會頭痛,但前期的投入換來的是後期的低維護壓力。

對此,網上專門有人總結了一個公式:

React = Think in JS, everything is JS + Data (structure)
Angular = Think in OO + Patterns (lots of) + 最佳實踐

Vue 很好的借鑑了二者的設計理念,並融會貫通。對於大部分開發者來說,它優雅而簡潔,可以讓我們把注意力集中在解決問題,而非程式碼邏輯上。

Vue 的獨特優勢

Vue 和其他前端框架相比,在結構、樣式、業務分離等方面更清晰徹底,更符合前端多年來的編碼習慣,更符合直覺、更容易學習和維護。

入門非常容易,資料豐富,框架功能完善,加入非常多的特性,例如,if, for, async,為開發者節省很多垃圾程式碼。模板支援 html 和 jsx,支援自定義指令,方便操作 dom 的一致行為。

一、門檻低、上手快

Vue 上手簡單的原因是無需複雜配置,只需要一個 HTML 與相關檔案就能跑起來。從設計的角度上來看,Vue 考慮的也是如何降低門檻,讓只掌握了 Web 基礎知識 (HTML, CSS, JS) 的情況下,能夠最快理解和上手,從而實現和完成一個應用。

和 React、Angular 相比,Vue 的中文文件是寫的最好的,再加上國內有非常豐富的視訊、圖文教程、各種開源的外掛,哪怕是一個新手前端開發,學習一週左右就可以搞一個專案出來。就如我們開頭所說,配合第三方前端表格控制元件 SpreadJS,自學一週就能做出一個企業級的表格協同文件。所以,它對於非專業前端,或者前端入門人士來說是非常適合的。

其次,Vue 設定多,所以需要思考的就少。屬性指令定義了一大堆,API 文件整理好的就在那裡,需要什麼一查,最佳實踐的 demo 寫好了放在那邊,照著寫就 OK 了。

二、人性化,符合使用者習慣

React 的設計理念是提供強大而複雜的機制,讓開發者來適應我;而 Vue 則是為了更適應開發者的使用習慣,在很多設定上都是讓開發者怎麼爽怎麼來。

比如 Vue 的 API 跟傳統 Web 開發者熟悉的模板契合度非常高。Vue 的單檔案元件是以模板+JavaScript+CSS 的組合模式呈現,它跟 Web 現有的 HTML、JavaScript、CSS 能夠更好地配合;Vue 提供反應式的資料,當資料改動時,介面就會自動更新,而 React 裡面則還需要呼叫方法 SetState。

三、Vue + 第三方控制元件 = 效率高 & 使用便利 & 元件化架構

前面我們提到了 Vue 的兩個基礎特性,但能成為時代的發展趨勢,說明 Vue 的能力遠不止於此。

從我們團隊嘗試使用 Vue 的情況來看,Vue 使用起來異常簡單,它從 React 那裡借鑑了元件化、prop、單向資料流、效能、虛擬渲染,並意識到狀態管理的重要性,並從 Angular 那裡借鑑了模板,並賦予了更好的語法,以及雙向資料繫結(在單個元件裡),它不強制使用某種編譯器,所以你完全可以在遺留程式碼裡使用 Vue,並對之前亂糟糟的 jQuery 程式碼進行改造。

即便,仍然有很多人認為 Vue 只適合開發簡單的網站或者單頁面應用,但其實 Vue 有著比 React 和 Angular 更為豐富多元的第三方控制元件資源。配合這些資源使用,Vue 做企業級專案甚至比其他框架來的更加便利高效。

這裡我們還是用第三方控制元件 SpreadJS 舉例,看看蘇寧易購是如何在短短一週內,搭建並上線一個企業級的表格協同文件系統的。

clipboard.png
通過嵌入 SpreadJS 線上編輯器,開發的系統介面

蘇寧易購作為我國領先的 O2O 智慧零售商,在實現協同辦公之前處理內部資訊的辦法是:在 Excel 上安裝外掛,通過外掛與資料庫通訊,實現資料許可權管控,這樣做非常的低效且混亂。

為了提升效率實現真正的協同辦公,它們採購了 SpreadJS 純前端表格控制元件,為其構建基於 Web 端 + Vue 整合的 Excel 資料管理系統 —— 「極客辦公平臺」。

clipboard.png
極客辦公平臺介面截圖

之所以選用 Vue 作為前端框架,是因為 Vue 本身通過提供現成的正規化讓整個專案的搭建過程更加快捷。題外話:其實在選擇 Vue 之前,專案組已經嘗試過 React 框架,但是一次又一次的整理prop和重構微元件的過程讓其痛不欲生。

而之所以選用 SpreadJS ,是因為它已經實現了微軟 Office Excel 90% 以上的內建功能,開發人員無需安裝任何軟體,只需增加一些 UI 樣式和下拉框,就可以迅速交付一套完整的基於 Web 的 Excel 功能模組。

據蘇寧易購系統架構師候健的分享所述,為保證新老系統順利過渡,需要投入人力,完成大量的 Excel 資料遷移工作,因此,新老系統對 Excel 檔案的相容性至關重要。而藉助 SpreadJS 純前端無損匯入匯出 Excel 這一產品特性,極客辦公平臺才得以順利完成交付並迅速投入使用。

點選此處,瞭解 SpreadJS 與 Vue 整合,蘇寧集團“極客辦公”系統的開發案例。


為什麼選擇 Vue + SpreadJS?

使用 Vue + SpreadJS 可以快速搭建一套線上協同表格文件,無論是對於文件的效能、專案研發效率,以及後期維護成本和新老系統資料遷移成本來說,它們都是一對“最佳拍檔”。

SpreadJS 提供了類 Excel 的操作介面和開放的 API,將其嵌入系統,可快速實現 Excel 匯入匯出、公式計算、線上填報資料、列印報送、實時預覽、資料校驗、服務端資料互動等功能,通過對其二次擴充套件,可以將 SpreadJS 作為線上文件協同編輯系統的核心模組,滿足多人協作、實時編輯、資料同步、多級上報、歷史查詢等業務需求。經過實測,藉助 Vue + SpreadJS,可以實現用不到 100 行程式碼,將 Excel 的功能和使用體驗完美嵌入到線上文件系統中。

如上面蘇寧易購的例子,在 Vue 對應的頁面元件 mount 中重新呼叫初始化方法,實現高度類似 Excel 的表單佈局,僅需如下程式碼:

clipboard.png

Vue —— 契合當下的大勢所趨

我們已經多次嘗試使用 Vue 為不同的專案開發了很多程式碼,結果也很令人滿意(每個專案週期不超過 3 個月)。也許,3 個月對於後端開發來說算不上什麼,但在 JS 世界裡,它舉足輕重 。

文無第一武無第二,無謂的爭論誰比誰好並沒有什麼意義,本文也並不是希望將這三個框架分個高下,而是希望可以給大家提供更多參考資訊,根據自身專案的實際需求來選擇更適合的框架。

從客觀事實來說,最具創新力的是 React,而最具企業級能力的是 Angular,能夠取長補短,各項資料介於兩者之間的是 Vue。

正是因為 Vue 具備門檻低、易上手、人性化、效率高等特點,外加有著最為豐富的中文資源和諸如 SpreadJS 等優秀的第三方控制元件加持,開發者們得以實現專案的“短平快”開發。在這個追求「快速」和「變化」的時代,這款前端框架的定位明顯更契合時代的主流需求。

即便 Vue 的作者尤雨溪曾多次表示,如果多年以後要論歷史地位,React 肯定是高於 Vue 的。不過歷史地位並不是開發者需要考慮的問題,我們可以為某一個程式語言、某一種框架的社群發展貢獻力量,但在實際的專案中,不能盲目的被束縛住。

文中資源擴充套件閱讀:

Vue 官方文件:https://cn.vuejs.org/v2/guide/
SpreadJS 官網:https://www.grapecity.com.cn/...
蘇寧集團開發案例:https://www.grapecity.com.cn/...

segmentfault 思否

相關文章