關於require()和export引入依賴的區別


原文鏈接:https://blog.csdn.net/liya_nan/article/details/81141244

require 和 import,都是為了JS模塊化使用。最近項目中,因為多人協同開發,出現了一個項目中同時使用了require 和 import 引入依賴的情況。正常情況下,一個項目中最好是對引入方式做一個規范。下面我們就來看一下require 和 import的區別:

一.require
  require是Commonjs的規范,node應用是由模塊組成的,遵從commonjs的規范。用法:

  //a.js

function test (args) {
// body...
console.log(args);    
}

module.exports = {
test
};

//b.js

let { test } = require('./a.js');

test('this is a test.');

 

    require的核心概念:在導出的文件中定義module.exports,導出的對象類型不予限定(可為任意類型)。在導入的文件中使用require()引入即可使用。本質上,是將要導出的對象,賦值給module這個對象的exports屬性,在其他文件中通過require這個方法來訪問exports這個屬性。上面b.js中,require(./a.js) = exports 這個對象,然后使用es6取值方式從exports對象中取出test的值。

二.import
import是es6為js模塊化提出的新的語法,import (導入)要與export(導出)結合使用。用法:

//a.js:

export function test (args) {
// body...
console.log(args);    
}

// 默認導出模塊,一個文件中只能定義一個
export default function() {...};

export const name = "lyn";
//b.js:

// _代表引入的export default的內容
import _, { test, name } from './a.js';

test(`my name is ${name}`);

 

三、commonjs模塊與ES6模塊的區別
    1.commonjs輸出的,是一個值的拷貝,而es6輸出的是值的引用;

    2.commonjs是運行時加載,es6是編譯時輸出接口;
---------------------
作者:liya_nan
來源:CSDN
原文:https://blog.csdn.net/liya_nan/article/details/81141244
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM