-
import、export可以导入导出任何类型,包括字符串,变量,对象,方法
-
require、module.export只能导入导出对象
-
require 是赋值过程并且是运行时才执行, import 是解构过程并且是编译时执行。require可以理解为一个全局方法意味着可以在任何地方执行,而import必须写在文件的顶部。
//a.js
function test (args) {
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的值。
//a.js:
export function test (args) {
// body...
console.log(args);
}
// 默认导出模块,一个文件中只能定义一个
export default function() {...};
// 导出变量
export const name = "lyn";
//b.js:
// _代表引入的export default的内容,加入default关键字代表在import时可以使用任意变量名并且不需要花括号
import _, { test, name } from './a.js';
test(`my name is ${name}`);
import是es6为js模块化提出的新的语法,import (导入)要与export(导出)结合使用。