JavaScript >> Javascript 文檔 >  >> JavaScript

YUI 3 革命

在軟件工程領域,重點通常放在進化上。你構建了一個好的小東西,並在上面分層了更多功能,慢慢地將框架演變成比原來更大更好的東西。這需要大量的前期規劃,以確保框架有足夠的鉤子來輕鬆擴展。大多數 JavaScript 庫也是這樣開始的,YUI 也不例外。

現在 YUI 3 已經預覽,圍繞庫的方向有很多討論。我是團隊的兼職成員,但肯定不負責整個 YUI 的方向;該職位已經有一些非常有能力的工程師。當我第一次聽說 YUI 3 方法時,我既興奮又害怕。很興奮,因為我看到了新庫已經融入的可能性,但又害怕我無法使用它,因為升級路徑是非線性的。

新的雅虎! homepage 去年採用了 YUI 3 作為其核心庫(我寫過它)。在開發頁面的過程中,我們經歷了很多考驗和磨難,從缺乏文檔到學習新的範例。這些並不出人意料,因為我們採用了 YUI 3 的預發布版本,該版本並非真正用於生產用途。然而,一旦我們度過了最初的開發浪潮,我們的工程師就真正開始喜歡使用 YUI 3。我們發現它比 2.x 版本的庫更具表現力、簡潔和易於使用。

我聽說有人抱怨 YUI 3 與 YUI 2 太不同了,而製作這樣一個不同的庫是一個錯誤。事實上,我相信這正是在正確的時間採取了正確的舉措,並且對 YUI 團隊有很大的勇氣去做這件事給予了很多讚譽。在進化式編程是首選方法的世界中,YUI 決定採用一種革命性的方法。

在過去的四年中,Web 開發取得了突飛猛進的發展。在“Ajax”這個詞再次讓每個人都對 Web 開發感到興奮之前,這門學科已經停滯不前。在那個時候,開發人員的需求發生了變化和增長。新的最佳實踐已經出現,首選的開發模式已經正式化並記錄在案。我們都學到了很多關於哪些有效哪些無效的知識,這使得這是重新審視 JavaScript 庫的最佳時機。

與其他庫一樣,YUI 是基於 Web 開發人員的需求而開始的。需求已經改變,那麼圖書館為什麼不應該改變呢?你為什麼不回顧過去四年,看看所有的錯誤和教訓,並建立一個解決所有問題的圖書館?這正是 YUI 團隊所做的。他們研究了 YUI 2 無法做到的所有事情,以及他們希望下一個版本能夠做到的所有事情。結果是利用了 YUI 2 中最好的部分,加上一些有用的策略,如方法鏈(a la jQuery),並添加了一些偉大的前瞻性想法來創建一個仍然非常像 YUI 的新庫。

升級到 YUI 3 是否有一些痛苦?是的。但是向前邁出的主要步驟通常會帶來一些痛苦。革命從來都不是一件容易的事。問題不在於所涉及的痛苦,而在於您從痛苦中獲得的效用以及是否值得。只有您可以為您的 Web 應用程序回答該問題。如果您要從一個 JavaScript 庫更改為另一個,也是同樣的過程。

YUI 團隊的決定是一個艱難的決定,但我再次全心全意地支持。進化的痛苦要小得多,但它通常以膨脹告終。尊重過去的 API 是框架開發人員的責任,因此在方法命名、參數順序或數據結構方面的錯誤選擇變得一成不變(有關更多信息,請參閱 Crockford 的最新帖子)。您無法撤消已經部署的 API 中的錯誤決定,您只能添加(您希望)有一天會比舊功能更多使用的新功能。最後,您的庫最終會得到無法刪除的殘留功能。通過採用革命性的方法,YUI 能夠改變一切,從頭開始重建,而無需期望舊功能會在原來的位置或以相同的方式工作。這是一張白紙,團隊可以設計未來的解決方案,而無需擔心打破過去的錯誤。

請記住,如果您使用的是 YUI 2,您可以繼續使用它;沒有人會奪走您的 YUI 2。它將繼續存在並在 GitHub 上可供您下載、使用甚至提交更改。在 YUI 2、它的實現和擴展方面仍然有一個龐大的專家社區;那也不會消失。沒有人強迫你升級到 YUI 3,但如果你這樣做了,我想你會感到驚喜。


Tutorial JavaScript 教程
  1. 點擊提交按鈕後如何讓文本框的文字消失

  2. Vue 2 到 Vue 3 - 8 個月後

  3. 將 Ionic 5 應用程序與 kommunicate Bot 集成

  4. [React] 渲染動態內容列表

  5. 一點關於自定義 Hooks

  6. 什麼是函數柯里化以及為什麼要關心

  7. 使用多個上下文順利測試 React 組件。

  1. 前端職業建設 - Ep。 #1

  2. Ember 快速提示:如何分別拆分和導入 SASS/CSS 文件

  3. 銷售重構

  4. 使用代碼生成器搭建 Redux 樣板

  5. 10 個適用於 JavaScript 開發人員的有用工具

  6. react 項目:5 個可供學習的 React 應用程序示例

  7. 為什麼我們需要轉譯成 JavaScript?

  1. jQuery 分頁插件

  2. 如何將 json 加載到我的 angular.js ng-model 中?

  3. 文件 API 輸入層

  4. React:如何在 5 分鐘內創建自定義進度條組件