美文网首页前端总结
nodeJS基础二 模块

nodeJS基础二 模块

作者: 辛未羊的前端随笔 | 来源:发表于2019-06-05 11:23 被阅读0次

    模块

    在nodeJS中一个文件就是一个模块,这个模块本质就是一个函数

    模块化

    CommonJs exports(导出) require(导入)
    es6 export(导出) import(导入)
    AMD define(导出) require(导入)
    模块的定义
    module.exports,在module.exports对象上添加属性导出值
    exports,在exports对象上添加属性导出值
    exports对象和module.exports是同一个对象
    exports对象添加属性来导出值
    module.exports对象可以赋值一个对象导出值
    导出的始终是module.exports指向的对象

    模块引用

    rquire("文件名"),执行对应的文件并返回该文件对象的module.exports对象

    module.exports是什么

    新建module_001.js

      console.log(module);
    

    node输出

      Module {
        id: '.',
        exports: {},
        parent: null,
        filename: 'F:\\work\\layUiDemo\\server\\module_001.js',
        loaded: false,
        children: [],
        paths:
         [ 'F:\\work\\layUiDemo\\server\\node_modules',
           'F:\\work\\layUiDemo\\node_modules',
           'F:\\work\\node_modules',
           'F:\\node_modules' ] }
    

    可以看到module是一个对象,module里面有exports对象
    那么module.exports 跟exports有什么关系呢?
    修改module_001.js

      console.log(module.exports === exports); //输出true  说明他们两个指向同一个对象
    

    module.exports 与 exports 的区别

    新建module_001.js 和 module_002.js
    module_001.js

      let str  = 'Hello';
      let obj = {
          name:'tom',
          age:'18'
      };
      let fn = ()=>{
          console.log('fn.........')
      }
      module.exports.str=str;
      exports.obj = obj;
      exports.fn = fn;
    

    module_002.js

      const allObj = require('./module_001');
      console.log(allObj)
    

    输出

      { str: 'Hello',
        obj: { name: 'tom', age: '18' },
        fn: [Function: fn] }
    

    前面我们说了module.exports 与exports 他们两个指向同一个对象
    现在我们改变module_001.js

      let str  = 'Hello';
      let obj = {
          name:'tom',
          age:'18'
      };
      let fn = ()=>{
          console.log('fn.........')
      }
      exports = {
          str,
          obj,
          fn
       }
    

    输出是空,我们把exports换成module.exports发现输出就正常了。其原因在于,一开始module.exports 与 exports指向同一个对象,当exports = {} 的时候 就改变了exports的指向。require() 方法返回的是module.exports

    相关文章

      网友评论

        本文标题:nodeJS基础二 模块

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