exports 和 module.exports 的区别
https://cnodejs.org/topic/5231a630101e574521e45ef8
//一句话总结:exports是对module.exports的引用,require()返回的是 module.exports,
导出非对象接口时用覆盖module.exports的方法,导出对象接口时,exports 和 module.exports都行。
//module.exports 初始值为一个空对象
console.log(module.exports);//{} //exports是对module.exports的引用
console.log(exports);//所以也为{} //给module.exports添加属性方法或者修改module.exports的属性方法,exports对象也可以访问到,因为他们指向同一块内存地址,反之亦然
module.exports.name='123';
module.exports.fn=function(){
console.log(this.name)
}
module.exports.fn()//123
console.log(exports.name)//123
exports.fn()//123 exports.name='456';
exports.fn=function(){
console.log(this.name)
}
exports.fn()
console.log(module.exports.name)//456
module.exports.fn()//456 //覆盖module.exports或者exports整个对象
function aa(){
console.log('aaaaaaa')
}
module.exports=aa;//指向了新创建的对象
module.exports()//aaaaaaa
console.log(exports) //{ name: '456', fn: [Function] },还是老的地址
exports=module.exports//重新让exports指向module.exports
exports()//aaaaaaa //类似于:
var x={}
var y=x
console.log(x)//{}
console.log(y)//{}
x={'new':'new'}
console.log(y)//{}
console.log(x)//{'new':'new'} //require() 返回的是 module.exports 而不是 exports
//module.exports 写法
//aa.js
function abc(ag1){
return ag1
}
module.exports='abc' //require(aa)
var abc=require('./aa');
abc('ag1') //exports 写法
//aa.js
function abc(ag1){
return ag1
}
exports.abc=abc;//exports.abc==module.exports.abc
//require(aa)
var abc=require('./aa');//返回module.exports对象
abc.abc('ag1')//module.exports.abc
exports 和 module.exports 的区别的更多相关文章
- nodejs模块中exports和module.exports的区别
通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ ,这些核心模块被编译成二进制文件,可以require('模块名')去获取:核心 ...
- node exports和module.exports区别
我们只需知道三点即可知道 exports 和 module.exports 的区别了: exports 是指向的 module.exports 的引用 module.exports 初始值为一个空对象 ...
- exports和module.exports的区别
总结:exports是module.exports的指向. 1. module应该是require方法中,上下文中的对象 2. exports对象应该是上下文中引用module.exports的新对象 ...
- nodejs中exports与module.exports的区别详细介绍
如果模块是一个特定的类型就用Module.exports.如果模块是一个典型的"实例化对象"就用exports. exports.name = function() { conso ...
- exports与module.exports的区别,export与export.defult区别
在JS模块化编程中,之前使用的是require.js或者sea.js.随着前端工程化工具webpack的推出,使得前端js可以使用CommonJS模块标准或者使用ES6 moduel特性. 在Comm ...
- 【nodejs】exports 和 module.exports 的区别
require 用来加载代码,而 exports 和 module.exports 则用来导出代码.但很多新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 e ...
- exports和module.exports区别
参考:module.exports与exports的区别.关于exports的总结 exports 和 module.exports 的区别 module.exports是真正的模块接口,而expor ...
- exports与module.exports的区别
nodejs有自己的模块系统,分为文件模块和内置模块.webpack是运行在node环境中,在学习vue-cli的webpack配置的时候, 发现有的文件模块: exports.fun1=functi ...
- exports与module.exports的区别,以及export与export.defult的区别
在 JS 模块化编程的模块引入上, 主要有两种方式: CommonJS 模块标准 ES6 moduel 特性 1. CommonJS 模块引入:require() 模块导出:exports 或者 mo ...
- Node.js中exports与module.exports的区别
原文:http://www.hacksparrow.com/node-js-exports-vs-module-exports.html 你肯定对Node.js模块中用来创建函数的exports对象很 ...
随机推荐
- Smart210学习记录-----SD/MMC/SDIO驱动
转自:http://jingpin.jikexueyuan.com/article/23369.html http://blog.csdn.net/evilcode/article/details/7 ...
- 第三个Sprint冲刺第三天
讨论地点:宿舍 讨论成员:邵家文.李新.朱浩龙.陈俊金 讨论问题:增强了界面的效果,改善了视角
- Linux线程-pthread_join
pthread_join用来等待另一个线程的结束,函数原型如下: extern int pthread_join __P ((pthread_t __th, void **__thread_retur ...
- C++ 中的形参与返回值
函数调用时,形参对象和返回对象均采用引用方式进行(临时对象作为中介),当一个对象作为参数(非引用)被函数调用时,该对象会通过复制构造函数获得一个临时对象,该临时对象以引用方式传递给函数,简言之,函数会 ...
- LintCode First Bad Version
找出第一个出问题的version. /** * public class SVNRepo { * public static boolean isBadVersion(int k); * } * yo ...
- viewpager接受值图片轮播
package com.baway.test; import java.util.ArrayList;import java.util.List;import java.util.Timer;impo ...
- codeforces195c
link:http://codeforces.com/problemset/problem/336/C 从大到小枚举,如果对应的二进制位不等于0,就加进来,最后的sum如果%2^k==0那么就是合法的 ...
- linux之tmpwatch命令
系统使用时间长后会产生临时文件(/tmp下),需要清理.但清理的时候不推荐使用rm -rf.这样有时会引起程序的僵死. tmpwatch的说明: [root@AY121231034820cd91077 ...
- 51nod-1732 婚姻介绍所(后缀数组)
题目大意:回答任意两个子串的最长公共前缀. 题目分析:后缀数组的模板题.但是输入输出都要外挂. 代码如下: # include<iostream> # include<cstdio& ...
- Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中
一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以上命令之后如果端口没有被开放就会 ...