理論整理(五)

1.關於JS面向對象開發原理前端

2.關於AMD、CMD開發規範程序員

AMD規範: 異步模塊定義(Asynchronous Module Definition),它是 依賴前置 (由於依賴必須一開始就寫好)會先 儘早地執行(依賴)模塊 , 至關於全部的require都被提早了,它的 require 分全局和局部, 一個API當多個用 。chrome

        AMD規範及其表明: requireJS瀏覽器

CMD規範:CMD(Common Module Definition)更貼近 CommonJS Modules/1.1 和 Node Modules 規範,一個模塊就是一個文件;它推崇 依賴就近 想何時 require 就何時加載,實現了 懶加載, 延遲執行 (as lazy as possible) ;也沒有全局 require, 每一個API都簡單純粹 。性能優化

        CMD規範及其表明: seaJS服務器

相同之處

RequireJS 和 Sea.js 都是模塊加載器,倡導模塊化開發理念,核心價值是讓 JavaScript 的模塊化開發變得簡單天然。異步

不一樣之處 

  • 定位有差別。RequireJS 想成爲瀏覽器端的模塊加載器,同時也想成爲 Rhino / Node 等環境的模塊加載器。Sea.js 則專一於 Web 瀏覽器端,同時經過 Node 擴展的方式能夠很方便跑在 Node 環境中。前端性能

  • 遵循的規範不一樣。RequireJS 遵循 AMD(異步模塊定義)規範,Sea.js 遵循 CMD (通用模塊定義)規範。規範的不一樣,致使了二者 API 不一樣。Sea.js 更貼近 CommonJS Modules/1.1 和 Node Modules 規範。ide

  • 推廣理念有差別。RequireJS 在嘗試讓第三方類庫修改自身來支持 RequireJS,目前只有少數社區採納。Sea.js 不強推,採用自主封裝的方式來「海納百川」,目前已有較成熟的封裝策略,SeaJS提倡:文件即模塊。模塊化

  • 對開發調試的支持有差別。Sea.js 很是關注代碼的開發調試,有 nocache、debug 等用於調試的插件。RequireJS 無這方面的明顯支持。

  • 二者代碼質量有差別。RequireJS 是沒有明顯的 bug,SeaJS 是明顯沒有 bug。

  • 插件機制不一樣。RequireJS 採起的是在源碼中預留接口的形式,插件類型比較單一。Sea.js 採起的是通用事件機制,插件類型更豐富。

總之,若是說 RequireJS 是 Prototype 類庫的話,則 Sea.js 致力於成爲 jQuery 類庫。

3.前端模塊化開發的優點

  1. 模塊的版本管理。經過別名等配置,配合構建工具,能夠比較輕鬆地實現模塊的版本管理。
  2. 提升可維護性。模塊化可讓每一個文件的職責單一,很是有利於代碼的維護。Sea.js 還提供了 nocache、debug 等插件,擁有在線調試等功能,能比較明顯地提高效率。
  3. 前端性能優化。Sea.js 經過異步加載模塊,這對頁面性能很是有益。Sea.js 還提供了 combo、flush 等插件,配合服務端,能夠很好地對頁面性能進行調優。
  4. 跨環境共享模塊。CMD 模塊定義規範與 Node.js 的模塊規範很是相近。經過 Sea.js 的 Node.js 版本,能夠很方便實現模塊的跨服務器和瀏覽器共享。
  5. 經過 exports 暴露接口。這意味着不須要命名空間了,更不須要全局變量。這是一種完全的命名衝突解決方案。
  6. 經過 require 引入依賴。這可讓依賴內置,開發者只需關心當前模塊的依賴,其餘事情 Sea.js 都會自動處理好。對模塊開發者來講,這是一種很好的 關注度分離,能讓程序員更多地享受編碼的樂趣。

以 jQuery、RequireJS、國內的 Sea.js、OzJS 等類庫爲基礎的集市模式。在集市模式下,全部組件彼此獨立、職責單一,各組件經過組合鬆耦合在一塊兒,協同完成開發。

4.各主流瀏覽器(IE/firefox/chrome/safari)的區別、漏洞、差別

Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器

Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey

Presto內核:Opera7及以上

Webkit內核:Safari,Chrome

相關文章
相關標籤/搜索