一、module.exports与exports

  1. nodeJS采用commonJs规范,当前文件是一个模块(module)私有域,通过exports属性导出,通过require()引入模块,通过.xx去获取值,从而了解到加载某个模块,其实是加载该模块的exports属性
  2. exportsmodule.exports的别名,不要在同一个文件内同时使用两个,否则只能获取到module.exports的值

exports导出

// example.jsmodule.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 defaultimport b from ...console.log(a)console.log(fun())

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