nodeJS
采用commonJs
规范,当前文件是一个模块(module)
私有域,经过exports
属性导出,经过require()
引入模块,经过.xx去获取值,从而了解到加载某个模块,实际上是加载该模块的exports
属性exports
是module.exports
的别名,不要在同一个文件内同时使用两个,不然只能获取到module.exports
的值// example.js module.exports.a = '111'; module.exports.fun= function() { } // 或者写成对象形式 module.exports = { a : '111', fun: function(){} }
let test = require('./example.js') console.log(test.a) console.log(test.fun);
export
和import
。export
命令用于规定模块的对外接口,import
命令用于输入其余模块提供的功能。export
命令规定的是对外的接口,必须与模块内部的变量创建一一对应关系。意思是导出的不是一个具体的数值,而是一个对象{a: 1, b: function(){}}
import
命令接受一对大括号,里面指定要从其余模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js
)对外接口的名称相同。所以,import {}
中的变量名是export {}
的key
值import
命令输入的变量都是只读的,由于它的本质是输入接口。所以,模块导出的值,只能获取,不能够修改//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,这表明是模块的总体输出
// 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())
补充:export
与import
可复合书写,若是在一个模块之中,先输入后输出,不作任何操做export {} from ''
node