亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

require和ES6 import的區(qū)別

miguel.jiang / 3046人閱讀

摘要:模塊化的進程里,出現(xiàn)了很多模塊化的方案,,。隨著標(biāo)準(zhǔn)的發(fā)布,的規(guī)范也被廣泛使用了。只是瀏覽器的支持程度不高,需要配合轉(zhuǎn)碼工具使用。輸出可以看出,很重要的一個區(qū)別就是一個基本值是否會同步變化,

js模塊化的進程里,出現(xiàn)了很多模塊化的方案,commonjs,requirejs(AMD),CMD。隨著ES6標(biāo)準(zhǔn)的發(fā)布,import/export的規(guī)范也被廣泛使用了。只是瀏覽器的支持程度不高,需要配合轉(zhuǎn)碼工具使用。ES6的模塊化和之前社區(qū)的commonjs模塊化到底有什么區(qū)別呢?

Commonjs的require和module.exports

require是個函數(shù),動態(tài)加載,也因此

1.require導(dǎo)入是在運行時,理論上可以在任意地方調(diào)用require導(dǎo)入模塊;
2.require()的路徑可以是表達式:require("/app" + "/index");

require返回對應(yīng)module.exports對象的淺拷貝

1.如果是module.exports里的基本類型的值,會得到該值的副本
2.如果是module.exports里的對象類型的值,會得到該值的引用
ES6的import和export

import在編譯時確定導(dǎo)入

1.路徑只能是字符串常量
2.import會被提升到文件最頂部
3.導(dǎo)入的變量是只讀的

import導(dǎo)入的是值引用,而不是值拷貝

1.模塊內(nèi)部值發(fā)生變化,會對應(yīng)影響到引用的地方
2.import導(dǎo)入與導(dǎo)出需要有一一映射關(guān)系,類似解構(gòu)賦值。

代碼說明一下兩者的區(qū)別

Commonjs

// a.js
let a = 0;
const count = () => {
    a++;
}
setTimeout(function(){
    a++;
    console.log("in module the a is " + a);
}, 500);
module.exports = {
    a,
    count,
};

// b.js
let foo = require("a.js");
foo.count();
setTimeout(function(){
    console.log("in require the a is " + foo.a);
}, 1000);

// 輸出
// in the module the a is 2
// in the require the a is 0

因為foo是一份淺拷貝,所以a是require導(dǎo)入時export里a的值;而count是一個函數(shù),foo.count是這個函數(shù)的一個引用,所以調(diào)用時作用域是它聲明處一樣,也就是它修改的a是exports里的,而不是foo.a。

Es6 module

// a.js
let a = 0;
const count = () => {
    a++;
}
setTimeout(function(){
    a++;
    console.log("in module the a is " + a);
}, 500);
export {
    a,
    count,
};

// b.js
import { a, count } from "a.js";
count();
setTimeout(function(){
    console.log("in require the a is " + a);
}, 1000);

// 輸出
// in the module the a is 2
// in the require the a is 2

可以看出,很重要的一個區(qū)別就是一個基本值是否會同步變化,

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/104175.html

相關(guān)文章

  • require,import區(qū)別

    摘要:,區(qū)別遵循的模塊化規(guī)范不一樣模塊化規(guī)范即為提供一種模塊編寫模塊依賴和模塊運行的方案。出現(xiàn)的時間不同相關(guān)的規(guī)范由于野生性質(zhì),在年前后出生。作為的規(guī)范,一直沿用至今。這其實要感謝原來項目名叫做,后更名為這個神一般的項目。 require,import區(qū)別 遵循的模塊化規(guī)范不一樣 模塊化規(guī)范:即為 JavaScript 提供一種模塊編寫、模塊依賴和模塊運行的方案。誰讓最初的 JavaScri...

    Rango 評論0 收藏0
  • 前端模塊化詳解

    摘要:提倡依賴前置,在定義模塊的時候就要聲明其依賴的模塊。適用場景按需加載條件加載動態(tài)的模塊路徑注關(guān)于模塊化,詳細見阮一峰的入門模塊與模塊化區(qū)別模塊化的規(guī)范和兩種。 模塊化開發(fā)方便代碼的管理,提高代碼復(fù)用性,降低代碼耦合,每個模塊都會有自己的作用域。當(dāng)前流行的模塊化規(guī)范有CommonJS,AMD,CMD,ES6的import/export CommonJS的主要實踐者就是nodejs,一般...

    zhangfaliang 評論0 收藏0
  • 談?wù)凧s前端模塊化規(guī)范

    摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個模塊就是一個文件。 拋出問題: 在開發(fā)中在導(dǎo)入模塊時經(jīng)常使用require和import; 導(dǎo)出模塊時使用module.exports/exports或者export/export default; 有時候為了引用一個模塊會使用require奇怪的是也可以使用import?...

    Steve_Wang_ 評論0 收藏0
  • 談?wù)凧s前端模塊化規(guī)范

    摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個模塊就是一個文件。 拋出問題: 在開發(fā)中在導(dǎo)入模塊時經(jīng)常使用require和import; 導(dǎo)出模塊時使用module.exports/exports或者export/export default; 有時候為了引用一個模塊會使用require奇怪的是也可以使用import?...

    NeverSayNever 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<