溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

前端模塊化常見面試題和答案

發布時間:2020-06-06 15:43:18 來源:億速云 閱讀:607 作者:Leah 欄目:編程語言

這篇文章給大家分享的是有關前端模塊化常見面試題和答案。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

前端模塊化常見面試題和答案

 

1、對 AMD,CMD,CommonJs 有什么理解?

 

AMD 規范即異步模塊加載機制。從規范描述頁面看,AMD 很短也很簡單,但卻完整描述了模塊的定義,依賴關系,引用關系以及加載機制。 AMD 規范其實只有一個主要接口 define(id,dependencies,factory),它要在聲明模塊的時候指定所有的依賴dependencies,并且還要當做形參傳到factory中,對于依賴的模塊提前執行,依賴前置

 

define("module", ["dep1", "dep2"], function(d1, d2) { return someExportedValue;
  

});
  

require(["module", "../file"], function(module, file) { /* ... */ });
  

優點:適合在瀏覽器環境異步加載;并行加載多個模塊。
  

缺點:提高開發成本,代碼閱讀和書寫比較困難;不符合通用的模塊思維方式,是一種妥協的實現。
  

實現:requireJS,NodeJs,Dojo,JQuery
  

CMD 規范和 AMD 相似,盡量保持簡單,并且與 CommonJS 和 NodeJS 的
  

Modules 規范保持了很大的兼容性。在 CMD 中,一個模塊就是一個文件, 格式為:define( factory )
  

define("module", ["dep1", "dep2"], function(d1, d2) {
  

return someExportedValue;
  

});
  

require(["module", "../file"], function(module, file) { /* ... */
  

});
  

優點:依賴就近,延遲執行;很容易在 node 中運行。
 

缺點:依賴 SPM 打包,模塊的加載邏輯偏重。
  

實現:SeaJS
  

CommonJS 是在瀏覽器環境之外構建 JavaScript 生態系統為目標產生的項目,比如服務器和桌面環境中。CommonJS 規范是為了解決 JavaScript 的作用域問題而定義的模塊形式,可以使每個模塊在它自身的命名空間中執行。該規范的主要內容是:模塊必須通過 module.exports 導出對外的變量或接口,通過 require()來導入其他模塊的輸出到當前模塊。
  

//moduleA.js
  

module.exports =
  

function( value ){
  

return
  

value
  

*
  

2;

 

}
  

// moduleB.js
  

var multiplyBy2 = require('./moduleA');
  

var result = multiplyBy2(4);
  

CommonJS 是同步加載模塊,一個單獨的文件就是一個模塊。但其實也有瀏覽器端的實現,其原理是將所有模塊都定義好并通過 id 進行索引,
  

這樣就可以瀏覽器進行解析了 服務器端的 Node.js 遵循 CommonJS 規范。核心思想是允許模塊通過 require 方法來同步加載所要依賴的其他模塊,然后通過 exports 或 module.exports 來導出需要暴露的接口。
  

require("module");
  

require("../file.js");
  

exports.doStuff = function() {};
  

module.exports = someValue;
  

優點:服務器端便于重用;NPM 中已經將近 20w 個模塊包;簡單并容易使用。
  

缺點:同步的模塊方式不適合在瀏覽器環境中,同步意味著阻塞加載, 瀏覽器資源是異步加載的;不能非阻塞的并行加載多個模塊。
  

區別:(AMD or CMD)
  

2、為什么要模塊化?不用的時候和用RequireJS的時候代碼該如何書寫?

 

(1)方便大量的 js 腳本代碼的管理維護以及團隊配合開發;

 

(2)有效解決命名空間沖突及文件依賴加載順序問題;

 

(3)有利于模塊的版本管理,提高可維護性,有利于前端性能優化,跨環境共享模塊。

 

3、分別說說同步和異步模塊化的應用場景,說一下AMD 異步模塊化實現的原理?
  

引入 JS 時會遇到需要異步加載文件,此時 require.async 便可滿足異步加載需求。

 

關于前端模塊化常見面試題和答案就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女