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.前端模塊化開發的優點
exports
暴露接口。這意味着不須要命名空間了,更不須要全局變量。這是一種完全的命名衝突解決方案。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