美文网首页
node中commonJs模块加载规范和es6模块加载规范

node中commonJs模块加载规范和es6模块加载规范

作者: WWWWWWWWWWWWWWM | 来源:发表于2020-07-05 01:50 被阅读0次

1、commonJs加载规范

module.exports : 暴露
exports: 暴露
require : 引入

  • 区别
// 1、初始化他们是一个空对象
module.exports === exports === {} 

// 2、暴露的写法
module.exports = a; //a是你要暴露的内容,可以是任何东西
exports[key] = value; //exports只能是这种写法,不能写exports = a,这种写法

//3、 module.exports才是真正的接口,exports只不过是它的一个辅助工具。 
//最终返回给调用的是module.exports而不是exports。
// 所有的exports收集到的属性和方法,都赋值给了Module.exports。
// 当然,这有个前提,就是module.exports本身不具备任何属性和方法。
// 如果,module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。

对于区别中第三条的疑问的解释:

先看例子

var counter  = 0;
exports.printNextCount = function()
    {
    counter+=2;
        console.log(counter);
    }
module.exports = function(){
counter+=10;
this.printNextCount=function(){
console.log(counter)
}

}
var isEq = (exports === module.exports);
console.log(exports);
console.log(module.exports);
console.log(isEq);

打印结果


image.png

说明
exports仅仅是module.exports的一个地址引用。nodejs只会导出module.exports的指向,如果exports指向变了,那就仅仅是exports不在指向module.exports,于是不会再被导出,这可以解释为什么不能使用

exports = {a: 1} //错误,
exports.a = 1;

这种写法,因为,当使用exports = {a:1}时,相当于把exports的指向从module.exports变成了{a:1},当然不会再暴露了。

  • commonJs结论

NodeJs开发者建议导出对象用module.exports,导出多个方法和变量用exports,为了避免混淆,大部分场景用module.exports就行了
来自
https://www.cnblogs.com/ooooevan/p/5897586.html

1、es6模块加载规范

es6模块加载规范不能直接在node里面运行,需要babel,且必须在服务器端,自己手写的html部署在服务器端需要加

 <script type="module"></script>

commonJs加载规范,暴露和导入这两个是深拷贝,两者完全脱离关系;ES modules即es6模块加载规范是浅拷贝,两者还存在引用关系

.

相关文章

  • 模块化 require 、export、module.expor

    CommonJS模块规范(node)和ES6模块规范 require: node 和 es6 都支持的引入 exp...

  • 22Module语法

    概述 CommonJS 是服务器模块加载规范,AMD 是浏览器模块加载规范 前者,nodejs中require和m...

  • 前端模块加载规范

    模块加载规范:CommonJS、AMD 和 CMD,而框架Node.js、RequireJS 和 Seajs 分别...

  • node中commonJs模块加载规范和es6模块加载规范

    1、commonJs加载规范 module.exports : 暴露exports: 暴露require : 引...

  • 廖雪峰网站学习

    用vs.code调试js代码非常方便,node中的模块加载机制被称为CommonJS规范。 在这个规范下,每个.j...

  • CommonJS规范与AMD/CMD规范总结

    CommonJS规范加载模块是同步的,只有加载完成,才能执行后面的操作。AMD规范是非同步加载模块,允许指定回调函...

  • ES6 新特性之——import

    简单介绍不同规范 CommonJS规范和AMD规范运行时加载 上述代码:① 整体加载fs模块,生成一个fs对象② ...

  • javascript模块化总结

    CommonJS 规范 实现js模块化模块加载 require模块标识 module模块定义 exports No...

  • Node.js文档

    # 模块机制 node采用模块化结构,按照CommonJS规范定义和使用模块,模块与文件是一一对应关系,即加载一个...

  • require加载机制简单模拟

    Node 采用的模块化结构是按照 CommonJS 规范模块与文件是一一对应关系,即加载一个模块,实际上就是加载对...

网友评论

      本文标题:node中commonJs模块加载规范和es6模块加载规范

      本文链接:https://www.haomeiwen.com/subject/xeepqktx.html