一看就懂的module.exports/exports与module.export/export default {}

一、module.exports与exports

  1. nodeJS采纳commonJs范例,当前文件是一个模块(module)私有域,经由过程exports属性导出,经由过程require()引入模块,经由过程.xx去猎取值,从而相识到加载某个模块,实际上是加载该模块的exports属性
  2. exportsmodule.exports的别号,不要在同一个文件内同时运用两个,不然只能猎取到module.exports的值

exports导出

// example.js
module.exports.a = '111';
module.exports.fun= function() {
 
}

// 或许写成对象情势
module.exports = {
  a : '111',
  fun: function(){}
}

require加载

let test = require('./example.js')

console.log(test.a)
console.log(test.fun);

二、module.export/export default{}

  1. ES6中的模块功用主要由两个敕令组成:exportimportexport敕令用于划定模块的对外接口,import敕令用于输入其他模块供应的功用。
  2. export敕令划定的是对外的接口,必需与模块内部的变量竖立一一对应关联。意义是导出的不是一个详细的数值,而是一个对象{a: 1, b: function(){}}
  3. import敕令接收一对大括号,内里指定要从其他模块导入的变量名。大括号内里的变量名,必需与被导入模块(profile.js)对外接口的称号雷同。因而,import {}中的变量名是export {}key
  4. import敕令输入的变量都是只读的,由于它的实质是输入接口。因而,模块导出的值,只能猎取,不可以修正

export导出

//example2.js

// 1. 直接导出某个变量或函数
export const a = 1;
export function fun() {

}

// 2. 先定义变量或许函数,再举行导出
const a = 1;
export {a};

function fun() {

}
export {fun}; 

// 3. 加别号举行导出
const a = 1;
export {a as b} // b是a的别号

// 4. export default 
注重,一个文件只能有一个default,这代表是模块的团体输出

import导入

// 1. 通例导入
import {a, fun} from 'example2.js'
// 2. 别号导入
import {a as b} from ...
// 3. *导入全部模块
import * as b from ...
// 4. 前三种是module.export,此处是export default
import b from ...

console.log(a)
console.log(fun())

补充:exportimport可复合誊写,如果在一个模块当中,先输入后输出,不做任何操纵
export {} from ''

    原文作者:鱼是乎
    原文地址: https://segmentfault.com/a/1190000019399632
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞