node.js - 在多个地方需要模块并创建对象

标签 node.js express npm

var express = require('express'); 
var app = express();

这个问题以 Express 模块为例,但这可能适用于您需要该模块并使用构造函数的任何模块。

所以通用代码是

var M = require('M'); 
var myM = M();

我的问题是,在我的代码(在路由器文件中)中,我在许多文件中使用上述两行。

所以

  1. 这是使用模块的正确方法吗?每个模块都应该在一个地方被要求和构造(通过构造函数),然后在整个代码中使用构造的对象吗?
  2. 使用像我这样的模块有什么副作用(额外的 RAM 使用、延迟..)?

最佳答案

1) Is this the correct way of using modules?

这有两个部分:

  • 每个模块是否应该 require() 它所依赖的其他模块,即使多个模块具有共同的依赖关系?

    是的。这是 NodeJS 中的规范。 (对#2 进行了进一步解释。)

    并且,它将继续成为 native 的常态 import/export可供使用。

  • 然后应该构建它们吗?

    这取决于单个模块以及它是否公开构造函数/工厂/等。您必须引用该模块自己的文档。

    但是,有一个构造函数/工厂/等等。是异常(exception)多于常态。模块的默认导出只是一个对象,它通常附加有方法。大部分core modules请遵循该表格。

<小时/>

2) What are the side effects of using modules like i have used

同样,分为两部分:

  • require() 不应产生额外消耗。评估每个文件后,它是 module.exports is cached ,因此后续的 require 只会从缓存中获得相同的值。

  • 但是,工厂/构造函数可能会创建更多对象并在每次使用时消耗更多内存。

<小时/>

特别是对于 Express:

  • 在多个文件中使用 require('express') 来定义应用程序的不同部分非常有用,尤其是通过 express.Router。这可以帮助您组织您的申请。

  • 如果您想将应用程序定义为一系列子应用程序或定义多个应用程序同时运行,则只需多次调用工厂函数即可。

关于node.js - 在多个地方需要模块并创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387777/

相关文章:

node.js - ExpressJS : normalizePort function is really necessary?

javascript - 需要 : var io = require ('socket.io' )(http); 的双参数

node.js - 将图像 blob 上传到 Cloudinary

node.js - 使用 node.js 安装 xml2json 时出错

react-native:从 yarn 切换到 npm

javascript - 是否可以在 Node js 中操作 DOM?

node.js - 每当安装任何软件包时,npm 错误代码 eisdir errno -4068

node.js - Passport 本地 Mongoose : Authenticate user right after registration

node.js - Mongoose ODM,保存前更改变量

node.js - Browserify - bower vs npm Node 模块