zoukankan      html  css  js  c++  java
  • CommonJS 规范中的 module、module.exports 区别

    CommonJS 规范中的 module、module.exports 区别

    CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
    module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。
    为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。

    var exports = module.exports;
    

    注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

    exports.hello = function() {
      return 'hello';
    };
    
    module.exports = 'Hello world';
    

    上面代码中,hello函数是无法对外输出的,因为module.exports被重新赋值了。
    这意味着,如果一个模块的对外接口,就是一个单一的值,不能使用exports输出,只能使用module.exports输出。

    何时确定模块的依赖关系,以及输入和输出的变量:

    CommonJS 和 AMD 都只能在运行时确定这些东西,是“运行时加载”;
    es6 编译时就可确定,是“编译时加载”或者静态加载。

  • 相关阅读:
    .net 2.0 使用linq
    重建索引解决mssql表查询超时的问题
    倾斜摄影自动化建模成果的数据组织和单体化
    cesium导入3D模型(obj转gltf)
    github
    JSP转发和重定向的区别
    mysql压缩版的安装教程
    JSP内置对象
    运行jsp常犯的错误
    递归的几个demo
  • 原文地址:https://www.cnblogs.com/cag2050/p/10309471.html
Copyright © 2011-2022 走看看