Vue.js 創建者 Evan You 參與 WordPress JavaScript 框架討論

已發表: 2017-06-06
圖片來源:JSConf 中國

上週,WordPress 核心貢獻者將他們對新 JavaScript 框架的考慮範圍縮小到了 React 和 Vue。 由於核心團隊對使用 React 有更多的集體知識,他們已經接觸到在 WordPress 上下文中使用其他框架的不同經驗的開發人員。

貢獻者對 Vue 的主要擔憂之一是項目的壽命。 我問 Vue 的創建者 Evan You 是否可以就這個話題發表意見,讓 WordPress 貢獻者更好地了解這個項目,特別是關於他努力培養更多的維護者以幫助分擔維護工作的負擔。

“我認為查看跟踪記錄很重要——Vue 已經存在了將近 4 年,所有工作都在 GitHub 上公開完成,因此任何人都可以去查看維護歷史記錄,”你說。 “雖然它主要是由我開發的,但目前的維護更多是由社區驅動的。 我們有活躍的核心團隊成員對大部分問題進行分類,並且社區 PR 修復的問題比例越來越大。 所以——是的,我一直在努力培養更多的維護者,並將繼續這樣做。”

您目前每月從 Patreon 的經常性捐款中獲得 1 萬美元,這些捐款資助了他在 Vue 上的全職工作。 在此之前,他還曾在 Google 和 Meteor 工作過。 在 Google 工作期間,你從事的一些項目使用了 Angular,他說他發現對於當時的用例來說太重了。 他將 Vue.js 構建為對他喜歡的 Angular 概念的更輕量級的實現。

你最近還說他從 React 社區學到了很多東西,這影響了他在 Vue 2 中的一些技術決策。

“首先,Vue 2 在底層使用了相同的基於 Virtual DOM 的渲染模型,這是由 React 率先開創的,”You 說。 “引入虛擬 DOM 讓 Vue 在保持可訪問性的同時展示了 vdom 組合的強大功能。

“當探索新的問題領域時,React 社區也非常活躍——例如狀態管理和 CSS 管理。 當我為 Vue 實施官方解決方案時,有許多相互競爭的解決方案和很多靈感。”

Evan You 解決了 WordPress 核心貢獻者對 Vue.js 的誤解

你說他一直在關注 WordPress 貢獻者關於 React 與 Vue 的討論,但不會就哪個項目更好的選擇提供意見。

“我的回答顯然是有偏見的,老實說,我不是 WP 核心團隊的立場,所以我沒有足夠的視角來做出選擇,”你說。 “但是,我可以就正在討論的一些問題提供反饋,希望能幫助他們做出更明智的決定。”

您在最近的 Javascript 會議記錄上發表了評論,並澄清了對 Vue.js 的一些誤解。 您談到了“擁抱 JavaScript 這種語言”這一點,因為一些貢獻者認為 Vue 的模板語言掩蓋了底層的 JavaScript。

“我認為‘擁抱 JavaScript 這種語言’是我們在 Vue 中看不到的另一個 React 原語,”Andrew Duthie 在上次會議上說。

您的回復將 Vue 將模板用作“HTML 之上的視圖表示的語法糖”與他認為在 JSX 的情況下作為 JavaScript 之上的視圖表示的類似用法進行了比較:

UI 的日益豐富並不需要將所有內容都放在 JavaScript 中。 另一方面,僅僅因為 Vue 默認使用模板並不意味著它允許人們在不正確學習 JavaScript 的情況下也能過得去。

Vue 的模板在底層被編譯成 JavaScript 渲染函數,它們實際上更接近於 JavaScript,而不是傳統的字符串模板。 它只是底層虛擬 DOM 表示之上的一層語法糖。 將 JSX 視為 JS 之上視圖表示的語法糖; Vue 模板是 HTML 之上視圖表示的語法糖。

JSX/Raw JS 在需要直接操作虛擬 DOM 節點時確實提供了更大的靈活性,這就是為什麼 Vue 也支持渲染功能。 但這並不是將兩種相反的範式放在同一個帳篷下——它只是允許用戶跳過語法糖層以獲得更多控制。

您說在渲染函數之上進行模板化的想法是提供“更好的可訪問性”,這是許多其他 WordPress 採用 Vue 的支持者所共有的問題。

“對 HTML 更熟悉、用例更簡單的用戶可以使用該模板,而已經熟悉 JSX/render 功能的用戶可以充分利用 JS 的強大功能,”你說。 “這非常適合 WP 核心的使用:關心可接近性的社區用戶更容易上手,而核心團隊可以訪問 JSX/render 功能以用於高級用例。”

您還通過提供有關 Vue 開發過程的更多信息解決了長壽問題。 他確認當前的代碼庫主要由他一個人開發,但維護工作分佈在一個核心團隊中,成員遍布世界各地。

“其他貢獻者的提交計數較低,因為他們的貢獻都是以 PR 的形式提交的,我們使用 GitHub 上的 'Squash and commit' 功能,因此每個 PR 只為貢獻者帶來一次提交,”你說。 “僅在核心存儲庫中,我們就合併了近 500 個 PR,整個組織中還有更多。 vuejs 組織下的其他存儲庫,例如 vuex、vue-router、vuejs.org 也主要由專門的團隊成員維護。”

您還澄清了穩定性和未來兼容性的問題,因為 WordPress 貢獻者對 Vue 2.0 中模板語言的重大變化提出了擔憂。

“這需要澄清一下:Vue 版本控制嚴格遵循 semver,”你說。 “在 1.0 之後,唯一一次破壞性的 API 更改是 2.0 版本。 模板語法是 API 的一部分,因此它不會[中斷],並且在主要版本更新之間,我們承諾 100% API 向後兼容。 我們非常重視穩定性,我們的社區和生產用戶也是如此,包括 GitLab、Vice 和一些中國最大的互聯網公司。”

由於許多 WordPress 核心貢獻者多年來一直在 React 之上進行開發,You 的意見提供了對 Vue 的更詳細、更深入的了解,這是貢獻者在多輪反饋中一直要求的。 討論將在接下來的幾週內繼續進行,貢獻者計劃將該主題包括在 WordCamp Europe 的貢獻者峰會上。