不需要更多JS框架了

jopen 11年前發布 | 12K 次閱讀 JS框架

現在,JavaScript框架已成為Web項目開發不可或缺的一部分。那是因為很長一段時間以來,各種瀏覽器之間有很大的差別,人們不得不編寫框架對此進行屏蔽。問題在于,各種瀏覽器甚至在基本問題上都難以取得一致,以致框架還要針對瀏覽器該如何工作設計自己的模型,比如如何傳播事件、如何與 DOM交互等。于是出現了許多框架,常見的有jQuery、Dojo、MochiKit、Ext JS、AngularJS、Backbone 、Ember、React等。對于這種情況,谷歌工程師Joe Gregorio博文中寫道:

我認為是時候重新考慮JS框架模型了。沒有必要發明另外一種做事方式,只要使用HTML+CSS+JS就行了。

Joe認為,在過去的十年中,瀏覽器變得更好了,它們對標準的支持也得到了改善,每個版本的功能都比上一個版本強大,而且還支持一些新標準,如HTML ImportsObject.observePromisesHTML Templates。而人們之所以還在編寫JS框架,可能是出于慣性和習慣。

在進一步闡述觀點之前,他對Web框架相關的三個概念進行了簡單的區分。Gist是一段簡單的代碼,庫是一個更大代碼的集合,而框架不只是庫的簡單集合,它還有自己的事件、DOM交互模型。接下來,他說明了不需要JS框架的原因:

  • 框架是對Web平臺的抽象,但由于存在“抽象漏洞(abstraction leak)”,開發人員有時候必須訴諸于HTML+CSS+JS,而且有時候還需要深入研究框架才能找出問題所在。這樣一來,開發人員除了要學習HTML+CSS+JS之外,還需要花費大量的時間學習和研究框架。
  • 框架的另一個賣點是可以利用Widgets庫,而實際上,框架并不是必須的,每個Widget都應該是獨立的。語法高亮代碼編輯器CodeMirror就是一個很好的例子。它用JavaScript構建,可以用在任何地方,而不需要框架。
  • 框架提供的數據綁定特性并不是必須的,即使需要,也應該以庫的形式出現,而不是框架。
  • 框架最終會發展成為一個筒倉,為A框架創建的Widgets不能用于框架B,這會造成浪費。

Joe提出,后JS框架時代的基本思路是,開發人員應該使用HTML+CSS+JS的功能構建Widgets。這些Widgets相互獨立,可以組合使用。Web組件為這一切提供了可能。HTML Imports、HTML Templates、Custom Elements和Shadow DOM等技術允許開發人員創建可重用的元素和功能。要了解更多信息,請查看下列文章和庫:

而使用Web組件首先要有針對相關功能的Polyfills。他特別強調,Polyfills并不是框架,它們沒有引入自己的Web開發模型,而是使HTML 5模型可用。同時,它們也彌補了瀏覽器實現與現有標準在某種程度上的偏離。MDN上經常有一些簡短的、單功能的Polyfills

構建一個大型的HTML 5 Polyfill庫是有好處的,但更好地是能有一套工具可以根據項目需要生成一個完整HTML 5 Polyfill庫的子集。這樣,開發人員就可以混合和匹配不同來源的Web組件和庫,如X-Tag的<x-foo>和Polymer 的<core-bar>。關于如何獲取這些自定義元素,感興趣的讀者可以查看Brick的GitHub頁面X-Tag下載頁面。Joe指出,這并不是說創建自定義元素就需要創建自定義的打包器,那不是一個具有可擴展性的思路,而是說需要改變開源方式,一個Widget可以不是一個項目,一種更加輕量級的、類似Gist的共享方式可能更合適。在這方面,項目Asset Graph也許是個不錯的開端。所以,他認為,現在需要三樣東西:

  1. 構建可重用組件的習慣做法和指南;
  2. 可以遵循這些習慣做法編譯HTML、CSS和JS的工具;
  3. 可擴展的HTML 5 Polyfill,可以根據需要進行裁剪。

按照Joe的觀點,將來,開發人員不再需要學習最新的框架,只需要引入能夠滿足特定需求的自定義元素或庫來構建他們的應用。

來自:http://www.infoq.com/cn/news/2014/12/no-more-js-architecture

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!