关于require()和export引入依赖的区别

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

require 和 import,都是为了JS模块化使用。最近项目中,由于多人协同开发,出现了一个项目中同时使用了require 和 import 引入依赖的状况。正常状况下,一个项目中最好是对引入方式作一个规范。下面咱们就来看一下require 和 import的区别:es6

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

二.import
import是es6为js模块化提出的新的语法,import (导入)要与export(导出)结合使用。用法:this

//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}`);

 

3、commonjs模块与ES6模块的区别
    1.commonjs输出的,是一个值的拷贝,而es6输出的是值的引用;spa

    2.commonjs是运行时加载,es6是编译时输出接口;
---------------------
做者:liya_nan
来源:CSDN
原文:https://blog.csdn.net/liya_nan/article/details/81141244
版权声明:本文为博主原创文章,转载请附上博文连接!.net

相关文章
相关标签/搜索