首先可以知道的是这是两组不同模块规范。 module.exports 是CommonJS模块规范,通过require 导入
a.js: var x = 'hello' module.exports.x = x b.js: var a = require('./a.js') console.log(a.x) // hello而Node采用CommonJS模块规范,为了方便,为每个模块提供一个exports变量,指向module.exports,相当于
exports = module.exports所以不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。
而export和export default 是属于ES6语法,通过import 导入 export有三种写法
a.js // 写法一 export var m = 1; // 写法二 var m = 1; export {m}; // 写法三 var n = 1; export {n as m}; b.js import {m} from 'a.js' // 注意:这里的m是用大括号{}括起来的 下面是错误写法 // 报错 export 2; // 报错 var m = 2; export m;注意的是export规定对外的接口,必须与模块内部的变量建立一一对应关系。
export default是为模块指定默认输出,一个模块只能有一个export default。
a.js function fn() { // 输出 } export default fn ==>export { fn as default} import anyName from 'a.js'; // 注意:这里可以不用大括号{}把anyName括起来,因为default是唯一的 ===> import {default as anyName} from 'a.js' 下面是错误写法: // 错误 export default var a = 1; // 正确: export default a = 1 export 2; // 正确: export default 2转载于:https://www.cnblogs.com/MJyaaatou/p/9913404.html
相关资源:JAVA上百实例源码以及开源项目