node的module.exports和exports
一,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相关推荐
- 浅析Node模块中module.exports与exports的关系
Node.js遵循CommonJS规范的模块机制,一个JS文件即被视为一个独立的模块.在模块内部可以通过2种方式导出模块: module.exports exports module.exports是 ...
- Node.js module.exports与导出
by lazlojuly 通过lazlojuly Node.js module.exports与导出 (Node.js module.exports vs. exports) 它们是什么,如何使用它们 ...
- Node.js module.exports的用途是什么,如何使用它?
Node.js module.exports的用途是什么,如何使用它? 我似乎找不到任何相关信息,但它似乎是Node.js的重要组成部分,正如我在源代码中经常看到的那样. 根据Node.js文档 : ...
- (node中)module.exports 和exports的区别
(node中使用)module.exports 和exports的区别是什么? 用一句话来说明就是,require只会去引用module.exports这个对象的导出,不会引用exports对象的,而 ...
- Node.js 中的 module.exports 与 exports
介绍 module:每个模块中都有 module 对象,存放了当前模块相关的信息: module.exports:模块导出的内容: exports:默认情况下,exports 和 module.exp ...
- 一句话说清楚NodeJS中module.exports和exports的区别
关于这个问题NodeJS的官方文档中有一句很精辟的解释: What's the difference between module.exports and exports? The first exp ...
- module.exports与exports,export与export default之间的关系和区别
CommonJS模块规范和ES6模块规范完全是两种不同的概念. CommonJS模块规范: 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文 ...
- module.exports和exports得区别
对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports ...
- nodejs里的module.exports和exports
引 在node.js中我们可以使用module.exports和exports导出模块,设置导出函数.数组.变量等等 为什么可以用这两个模块? 或者直接问,node.js的模块功能是怎么实现的. 这样 ...
- module.exports 和 exports的区别
在模块化规范中commonjs大部分用于node.js中,而commonjs中的导出方式分为两种 module.exports 和 exports,那么这两种具体有哪些区别呢?请往下看 CommonJ ...
最新文章
- EF-Entity Framework 相关技术点收集贴
- ubuntu设置不同的eigen版本
- linux 下的 多线程http 下载器
- 【码云周刊第 24 期】超实用 Andorid 开发实例
- CF896E Welcome home, Chtholly(分块/并查集/第二分块)
- Java记录 -45- List的toString方法
- VMWare NSX安全生产和DMZ用例的详细设计指南
- python基础教程是什么-python基础教程之python是什么?
- [x-means] 1.x-means简介
- visio反向生成mysql数据库模型图_Visio2010中逆向工程建立数据库模型图
- 英超俱乐部面临网络威胁,球队一起训练防御网络攻击
- Oracle跨平台迁移之XTTS
- php实例视频播放代码,[h5]一个基于HTML5实现的视频播放器代码详解
- 怎样导出ZBrush中的模型和贴图
- Api接口的模块化管理
- CSR8675模组,支持蓝牙APTX
- 梁漱溟:人生的三种关系
- [ARM入门]消失的飞思卡尔:MKV30 16位AD采集
- GC是什么?为什么会有GC?
- c35是什么意思_混凝土c25、c30、c35分别代表什么意思?