原文鏈接: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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!