乱码时光

个人收藏夹

JS 使用 require 和 import 引入依赖的区别?

2020-3-21 admin

require 和 import,都是为了JS模块化使用。一个项目中最好是对引入方式做一个规范。下面我们就来看一下require 和 import的区别:

一.require
require 是 Commonjs 的规范,node 应用是由模块组成的,遵从 commonjs 的规范。用法:

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

二.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 模块的区别
commonjs 输出的,是一个值的拷贝,而 es6 输出的是值的引用;
commonjs 是运行时加载,es6是编译时输出接口;

版权声明:本文为CSDN博主「liya_nan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liya_nan/article/details/81141244