2
A
回答
1
只是为了澄清。这是专门针对Node.js的
创建在节点模块这就像你在类似下面的一个函数进行包装。实际上,这或多或少是节点正在做的事情。
function (exports, require, module, __filename, __dirname) {
}
所以,exports变量实际上是对module.exports的引用,像这样,你可以有两个变量指向同一个对象。导出和module.exports引用内存中的同一个点。您必须小心使用导出,因为有一些与JavaScript对象相关的“黑暗”部分,并且存在一些可能会中断的模式。这里有一个例子:
dependency_exports.js
exports = function() {
console.log('dependency');
}
// Place console.log to see the contents of the exports and module.exports
console.log(exports);
console.log(module.exports);
app.js
var dependency = require('./dependency_exports');
dependency();
为什么dependency_exports.js文件中的两个console.logs打印,如果不同的对象他们指着相同的记忆?请记住,它是对module.exports的引用。 当我们指定其他值,以该变量(出口)我们打破创建参考和在存储器中的新的点。 它不会更新module.exports中的引用。
所以,现在,如果我们试图做这样的事情:
dependency();
我们会看到一个错误回来,因为这个问题。
相关问题
- 1. 弹出窗口和弹出窗口之间有什么区别?
- 2. OpenGL(ES) - 截锥体和正方体之间有什么区别?
- 3. 是什么裁判之间进出
- 4. 是什么要求和提供的接口之间的差异
- 5. 是什么这之间的差异,自我,窗口和window.self
- 6. 什么是TrackPopupMenuEx和TrackPopupMenu窗口API之间的差异?
- 7. using关键字和IDisposable接口之间的关系是什么?
- 8. ESP和EBP之间是什么?
- 9. $(())和expr之间的区别是什么?
- 10. $和$ .fn之间的区别是什么?
- 11. 是什么A`和`之间`的差[:]`
- 12. ++和:haskell之间的区别是什么?
- 13. $(“”)和$ .find(“”)之间的区别是什么?
- 14. 是什么C之间的差++和MFC
- 15. “\”和“\。”之间的区别是什么?
- 16. “$ | ++”和“$ | = 1”之间的区别是什么
- 17. $(...)和`...`之间的区别是什么
- 18. .equals()和==之间的区别是什么?
- 19. 是什么data.frame和data.table之间R中
- 20. [undefined]和[,]之间的区别是什么?
- 21. 什么是为PrintWriter和DataOutputStream之间的区别是什么?
- 22. 子窗口和后代窗口之间有什么区别?
- 23. OpenGL-ES的“进”和“出”是什么? (从OpenGL移植)
- 24. 是什么进口DB和进口数据存储之间的区别
- 25. 命令窗口和立即窗口之间的实际区别是什么?
- 26. MVC和MVVM之间的区别和相似之处是什么?
- 27. 什么是SetupAPI,SetupAPI1和SetupAPI2?他们之间有什么区别?
- 28. 分配到出口与模块之间有什么区别?
- 29. 出口和requirejs之间的关系
- 30. 是什么@class和#进口
没见过答案 – hoang