网站到期续费要多少钱,wordpress广告调用代码,做网站一般需要哪些文件夹,中信银行门户网站系统CommonJS模块规范和ES6模块规范完全是两种不同的概念。 CommonJS模块规范: 根据这个规范#xff0c;每个文件就是一个模块#xff0c;有自己的作用域。在一个文件里面定义的变量、函数、类#xff0c;都是私有的#xff0c;对其他文件不可见。
CommonJS规范规定#xff0…
CommonJS模块规范和ES6模块规范完全是两种不同的概念。 CommonJS模块规范: 根据这个规范每个文件就是一个模块有自己的作用域。在一个文件里面定义的变量、函数、类都是私有的对其他文件不可见。
CommonJS规范规定每个模块内部module变量代表当前模块。这个变量是一个对象它的exports属性即module.exports是对外的接口。加载某个模块其实是加载该模块的module.exports属性。
var x 5;
var addX function (value) {return value x;
};
module.exports.x x;
module.exports.addX addX;// 上面代码通过module.exports输出变量x和函数addX。require方法用于加载模块。var example require(./example.js);console.log(example.x); // 5
console.log(example.addX(1)); // 6 exports 与 module.exports
为了方便Node为每个模块提供一个exports变量指向module.exports。这等同在每个模块头部有一行这样的命令。
优先使用 module.exports
var exports module.exports; module.exports / exports: 只有 node 支持的导出
require: node 和 es6 都支持的引入--{遵循的是CommonJS规范}
exports只辅助module.exports操作内存中的数据各种操作数据完结果到最后真正被require出去的内容还是module.exports
其实大家用内存块的概念去理解就会很清楚了。
然后呢为了避免糊涂尽量都用 module.exports 导出然后用require导入 ES6模块规范
不同于CommonJSES6使用 export 和 import 来导出、导入模块。 // profile.js
var firstName Michael;
var lastName Jackson;
var year 1958;export {firstName, lastName, year};//需要特别注意的是export命令规定的是对外的接口必须与模块内部的变量建立一一对应关系。//export default// 使用export default命令为模块指定默认输出
// export-default.js
export default function () {console.log(foo);
} export 和 export default区别:
export与export default均可用于导出常量、函数、文件、模块等在一个文件或模块中export、import可以有多个export default仅有一个通过export方式导出在导入时要加{ }export default则不需要export能直接导出变量表达式export default不行。export / import : 只有es6 支持的导出引入 testEs6Export.js
use strict
//导出变量
export const a 100; //导出方法
export const dogSay function(){ console.log(wang wang);
}//导出方法第二种
function catSay(){console.log(miao miao);
}
export { catSay };//export default导出
const m 100;
export default m;
//export defult const m 100;// 这里不能写这种格式。//index.js
use strict
var express require(express);
var router express.Router();import { dogSay, catSay } from ./testEs6Export; //导出了 export 方法
import m from ./testEs6Export; //导出了 export default import * as testModule from ./testEs6Export; //as 集合成对象导出/* GET home page. */
router.get(/, function(req, res, next) {dogSay();catSay();console.log(m);testModule.dogSay();console.log(testModule.m); // undefined , 因为 as 导出是 把 零散的 export 聚集在一起作为一个对象而export default 是导出为 default属性。console.log(testModule.default); // 100res.send(恭喜你成功验证);
});module.exports router; ES6的模块系统非常灵活。