小昱个人博客
欢迎来到小昱的世界

勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
node中module.exports和exports的区别
  • 首页 > Node.js
  • 作者:小昱
  • 2017年8月29日 11:04 星期二
  • 浏览:94
  • 字号:
  • 评论:0
  • 一、exports

    每一个node.js执行文件,都自动创建一个module对象,同时,module对象会创建一个叫exports的属性,初始化的值是 {}

     module.exports = {};

     为了方便地导出功能函数,node.js会自动地实现以下这个语句

    test.js

    exports.a = 1

    index.js

    var obj = require('./test');
    console.log(obj.a); // 1

     

    二、module.exports

    exports是引用 module.exports的值。module.exports 被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports

    test.js

    module.exports = {a: 2}
    
    exports.a = 1

    index.js

    var obj = require('./test');
    console.log(obj.a);

    可以看出,exports在module.exports 被改变后,失效。

     

    三、模块中的私有方法

    javascript里面有一句话,函数即对象。

    下面案例,View 是对象,module.export = View, 即相当于导出整个view对象。

    外面模块调用它的时候,能够调用View的所有方法。不过需要注意,只有是View的静态方法的时候,才能够被调用,prototype创建的方法,则属于View的私有方法。

    test.js

    function View(){}
    
    View.prototype.test = function(){
     console.log('test')
    }
    
    View.test1 = function(){
     console.log('test1')
    }
    
    exports = module.exports = View

    index.js

     var x = require('./test');
    
    console.log(x) // { [Function: View] test1: [Function] }
    x.test1() // test1
    x.test() // 报错

     


    参考资料

    http://cnodejs.org/topic/52308842101e574521c16e06

    http://es6.ruanyifeng.com/#docs/module

      您阅读这篇文章共花了:  
    二维码加载中...
    本文作者:小昱      文章标题: node中module.exports和exports的区别
    本文地址:http://www.xiaoyulive.top/?post=126
    版权声明:若无注明,本文皆为“小昱个人博客”原创,转载请保留文章出处。
    返回顶部| 首页| 碰碰手气| 捐赠支持| 手机版本|后花园

    Copyright © 2016-2017 小昱个人博客 滇ICP备16006294号