美文网首页前端总结
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基础二 模块

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

  • NodeJS基础:模块

    编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一...

  • 【NodeJS】基础知识

    nodejs基础 nodejs允许自己封装模块,使得编写程序可以模块化,便于维护整理。在一个js文件中写完封装的函...

  • 14-手写Node模块系统-Node模块原理分析

    模块系统是nodejs的基础,使用频率也很高。在使用nodejs过程中,以下几个关于模块系统的问题是否常常困扰着你...

  • nodejs 基础模块 path

    nodejs 基础模块 path __dirname 当前模块的文件夹名称。等同于 __filename 的 pa...

  • nodejs--day1笔记

    1. nodejs基础是ECMAScript和Node模块API 2. 模块导入导出 导出 导入 3. 系统模块f...

  • NodeJS常用API

    一、http模块: 二、NodeJS的模块: 三、 fs模块 四、全局变量 五、path模块: 六、 mime模块...

  • Nodejs的io交互

    nodejs io 交互 基础概念 readline: 模块的调用和声明的方式 外部组件

  • nodejs 基础模块 fs

    fs 文档 fs 文件系统 处理文件的模块 fs.readFile 读取文件 例子 fs.writeFile 写入...

  • nodejs 基础模块 events

    events 文档 events 绑定事件用 on,触发事件用 emit 例子 传入参数, 定义报出错误的例子 传...

网友评论

    本文标题:nodeJS基础二 模块

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