javascript - NPM 包本地 VS 全局范围

标签 javascript node.js web webserver

我在使用 Node、npm 时遇到了一些问题,并试图找出包结构,但我不太确定要 Google 一下什么。我一直在尝试寻找 npm 包导入方式的通用约定。

我最近在 Node 中编写了一个小型 Web 服务器,并且一直在使用 HttpDispatcher帮助处理请求。当我尝试创建多个 HttpDispatcher“对象”时,问题就出现了。当我这样做时,它实际上并没有创建一个新的,而是继续使用我创建的第一个。

总的来说,我对 Javascript 和 Node 相当陌生,但是我过去遇到过一些问题,在循环中创建匿名函数(我认为这就是它们的名字)并不总是(如果有的话)如预期。因此,我真的很好奇通常如何使用具有多个实例的包?

我通过将 HttpDispatcher 'object' 设置为全局来解决我的问题(删除前面的 var 关键字。这实际上会按预期创建一个新对象。我担心这是不正确的,不过。

所以我问你: 声明/初始化/导出 npm 包中声明的对象的正确方法是什么?我应该向此包的作者提交包含我的问题的拉取请求或建议吗?

非常感谢!

最佳答案

你说得对,你应该联系HttpDispatcher模块的作者

在 HttpDispatcher 模块的末尾,而不是导出实例:

module.exports = new HttpDispatcher();

作者可以导出构造函数本身,然后您可以在消费者模块中创建任意数量的实例:

module.exports = HttpDispatcher;

关于javascript - NPM 包本地 VS 全局范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720811/

相关文章:

javascript - 响应式 Google map API v3 - 自动在小屏幕上显示所有标记

javascript - 在 for 循环中使用 async/await

php - 网页无法读取 CSS 文件

javascript - 设置 window.onresize 时 HTML 元素未调整大小

php - 为什么很多网站(MySQL)的查询参数都是非常神秘的长整数?

javascript - Viewbag For Dropdown For - 一旦操作具有参数,就会删除选定的属性

javascript - jquery在字符串中添加空格

javascript - 为什么 UI 操作会在计算之后运行,即使两者是交替的?

node.js - this.emit 不工作但 self.emit 工作。为什么?

Node.js 和 GM 库