js使用require 和 import 的区别?

require和import都是为了js模块化而使用的。

一、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的值。
 

二、impoort

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是编译时输出接口;

 

 

 

 

你可能感兴趣的:(前端,js)