一,module.exports和exports

Node里面的模块系统遵循的是CommonJS规范。
那问题又来了,什么是CommonJS规范呢?
由于js以前比较混乱,各写各的代码,没有一个模块的概念,而这个规范出来其实就是对模块的一个定义。

CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)

先解释 exports 和 module.exports
在一个node执行一个文件时,会给这个文件内生成一个 exports和module对象,
而module又有一个exports属性。他们之间的关系如下图,都指向同一块{}内存区域。

exports = module.exports = {};

平时使用建议使用module.exports 导出,然后用require导入。

二,基本使用案例

1,exports和require

当使用exports时

let myFunc1 = function() { ... };
let myFunc2 = function() { ... };
exports.myFunc1 = myFunc1;
exports.myFunc2 = myFunc2;
const m = require('./mymodule');
m.myFunc1();

即引入的这个m对象,内部包含了该文件所有exports出来的东西。

2,module.exports和require

const a=function a(ctx) {ctx.body={"message":"hello from a"}
}
module.exports=a
const Router=require('koa-router')
const a= require('../api/ayewu')const router =new Router()
router.get('/a',a)module.exports=router

这时候a就是上面那个定义的函数了

三,再次理解

不难看出module是node.js自己主动为每个.js文件声明的一个变量,同时这个变量拥有两个参数,一个是索引id,一个是命名为exports的对象变量,exports用于存放用户导出的变量或属性。我们在对外导出时要做的就是:以key-value键值对的形式往module变量下的exports对象里面添加需要导出的变量或属性,如果像下面这样一个一个的导出:

function hello() {console.log('Hello, world!');
}function greet(name) {console.log('Hello, ' + name + '!');
}module.exports.hello = hello;
module.exports.greet = greet;

在require导入命名为test后。test.hello就是hello这个函数,test.greet就是greet这个函数。
于是在main.js中就可以引入使用:

module是node.js自己主动为每个.js文件声明的一个变量,其中有个参数exports,这个对象里面存着该文件导出的所有内容。
于是,可以这样写,更为方便快捷

function hello() {console.log('Hello, world!');
}function greet(name) {console.log('Hello, ' + name + '!');
}
let varible="这是一个变量"
module.exports={hello,greet,varible
}
//是这个的简写
// module.exports={//     hello:hello,
//     greet:greet,
//     varible:varible
// }

node的module.exports和exports相关推荐

  1. 浅析Node模块中module.exports与exports的关系

    Node.js遵循CommonJS规范的模块机制,一个JS文件即被视为一个独立的模块.在模块内部可以通过2种方式导出模块: module.exports exports module.exports是 ...

  2. Node.js module.exports与导出

    by lazlojuly 通过lazlojuly Node.js module.exports与导出 (Node.js module.exports vs. exports) 它们是什么,如何使用它们 ...

  3. Node.js module.exports的用途是什么,如何使用它?

    Node.js module.exports的用途是什么,如何使用它? 我似乎找不到任何相关信息,但它似乎是Node.js的重要组成部分,正如我在源代码中经常看到的那样. 根据Node.js文档 : ...

  4. (node中)module.exports 和exports的区别

    (node中使用)module.exports 和exports的区别是什么? 用一句话来说明就是,require只会去引用module.exports这个对象的导出,不会引用exports对象的,而 ...

  5. Node.js 中的 module.exports 与 exports

    介绍 module:每个模块中都有 module 对象,存放了当前模块相关的信息: module.exports:模块导出的内容: exports:默认情况下,exports 和 module.exp ...

  6. 一句话说清楚NodeJS中module.exports和exports的区别

    关于这个问题NodeJS的官方文档中有一句很精辟的解释: What's the difference between module.exports and exports? The first exp ...

  7. module.exports与exports,export与export default之间的关系和区别

    CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范: 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文 ...

  8. module.exports和exports得区别

    对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports ...

  9. nodejs里的module.exports和exports

    引 在node.js中我们可以使用module.exports和exports导出模块,设置导出函数.数组.变量等等 为什么可以用这两个模块? 或者直接问,node.js的模块功能是怎么实现的. 这样 ...

  10. module.exports 和 exports的区别

    在模块化规范中commonjs大部分用于node.js中,而commonjs中的导出方式分为两种 module.exports 和 exports,那么这两种具体有哪些区别呢?请往下看 CommonJ ...

最新文章

  1. EF-Entity Framework 相关技术点收集贴
  2. ubuntu设置不同的eigen版本
  3. linux 下的 多线程http 下载器
  4. 【码云周刊第 24 期】超实用 Andorid 开发实例
  5. CF896E Welcome home, Chtholly(分块/并查集/第二分块)
  6. Java记录 -45- List的toString方法
  7. VMWare NSX安全生产和DMZ用例的详细设计指南
  8. python基础教程是什么-python基础教程之python是什么?
  9. [x-means] 1.x-means简介
  10. visio反向生成mysql数据库模型图_Visio2010中逆向工程建立数据库模型图
  11. 英超俱乐部面临网络威胁,球队一起训练防御网络攻击
  12. Oracle跨平台迁移之XTTS
  13. php实例视频播放代码,[h5]一个基于HTML5实现的视频播放器代码详解
  14. 怎样导出ZBrush中的模型和贴图
  15. Api接口的模块化管理
  16. CSR8675模组,支持蓝牙APTX
  17. 梁漱溟:人生的三种关系
  18. [ARM入门]消失的飞思卡尔:MKV30 16位AD采集
  19. GC是什么?为什么会有GC?
  20. c35是什么意思_混凝土c25、c30、c35分别代表什么意思?

热门文章

  1. VAF:高级Web模糊测试工具
  2. 通俗有趣讲解Atomic原子类的实现原理
  3. linux edi esi eax 汇编指令,汇编指令lodsb和stosb、lodsd和stosd
  4. 小程序ASC解密(java)
  5. springboot集成redis_cluster两种方式
  6. API Monitor简介(API监控工具)
  7. 清除localstorage
  8. javascript(定时函数)
  9. 关于断点续传的那些事
  10. 【Spring-IOC】Spring中的数据校验