Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js针对require的最佳实践_Node.js_Express_Mongoose - Fatal编程技术网

Node.js针对require的最佳实践

Node.js针对require的最佳实践,node.js,express,mongoose,Node.js,Express,Mongoose,我正在创建一个Express应用程序,并使用Mongoose保存数据 我创建了一个用户模型(用户名和密码)。它需要能够被保存。所以我在Models/user-model.js中使用了require('mongoose')。在用户路径中,我希望能够获得所有用户,或者只是找到一些。所以我也需要require('mongoose')。同样在主js文件(app.js)中,我创建了一个到数据库的连接,因此那里也有一个require('mongoose') 这一切都很好,但这是在所有这些文件中要求mongo

我正在创建一个Express应用程序,并使用Mongoose保存数据

我创建了一个用户模型(用户名和密码)。它需要能够被保存。所以我在Models/user-model.js中使用了
require('mongoose')
。在用户路径中,我希望能够获得所有用户,或者只是找到一些。所以我也需要
require('mongoose')
。同样在主js文件(app.js)中,我创建了一个到数据库的连接,因此那里也有一个
require('mongoose')

这一切都很好,但这是在所有这些文件中要求mongoose的最佳方式吗?或者有更好的方法吗?

好吧,很难说“最好”是肯定的。但是,你所做的是一个足够普遍的实践,在大多数情况下应该是好的

第一次需要猫鼬时,它将是:

模块在第一次加载后被缓存。这意味着(除其他外)每个对
require('foo')
的调用都将返回完全相同的对象,如果它将解析为相同的文件

多次调用require('foo')可能不会导致多次执行模块代码。[……]

“最好的”很难说清楚。但是,你所做的是一个足够普遍的实践,在大多数情况下应该是好的

第一次需要猫鼬时,它将是:

模块在第一次加载后被缓存。这意味着(除其他外)每个对
require('foo')
的调用都将返回完全相同的对象,如果它将解析为相同的文件

多次调用require('foo')可能不会导致多次执行模块代码。[……]


考虑到模块缓存…您认为创建一个全局应用程序对象并在引导中存储模型和库之类的东西,然后将该对象传递给其他模块,或者在需要时只需要模块依赖项,而不管我们的模块是否有很多require()句子?

考虑到模块缓存……您认为创建一个全局应用程序对象并在引导中存储模型和库之类的东西,然后将该对象传递给其他模块,或者在需要时只需要模块依赖项,无论我们的模块是否有很多require()句子?

我只是像你一样需要。我只是像你一样需要。我也看到过人们只是简单地将db对象直接扔到req对象下面,这样在任何中间件中你都可以直接使用w/req.db。我不确定这是否是最佳实践,但这是很常见的。我还看到人们只是简单地将db对象直接扔到req对象下面,这样在任何中间件中,您都可以直接使用w/req.db访问它。不确定这是否是最佳实践,但这很常见。