繁体   English   中英

Nodejs需要:一次还是按需?

[英]Nodejs require: once or on demand?

目前加载模型的最佳实践是什么(我认为所有必需的文件都适用)?

我正在考虑这两种方法来实现解决方案(无意义的代码如下所示):

var Post = require('../models/post');

function findById(id) {
    return new Post(id);
}

function party() {
    return Post.getParty();
}

VS

function findById(id) {
    return new require('../models/post')(id);
}

function party() {
    return require('../models/post').getParty();
}

这些片段中的一个是首选吗? 是否有相当大的记忆和时间权衡? 或者它只是一个不成熟的优化?

这是一个过早的优化(对require()调用是缓存和幂等的),但我个人称你的第一个样式更好(在初始化期间加载依赖性而不是后续处理),因为它更容易让你了解你正在做的事情。 在开始时加载所有内容会稍微减慢启动速度(这几乎不是问题),以换取大多数请求运行得更快(除非您已经确定瓶颈并进行了一些核心分析,否则您不必担心)。

你应该definititely使用的版本与单一调用require开头。 虽然模块加载的频率没有任何差别(但是只有你加载模块才会加载一次),但第二种方式存在性能问题。

问题是require是Node.js中阻塞的少数几个函数之一。 这意味着,只要它运行,Node.js就无法满足任何传入请求。 在启动时,这没有问题:只需要一段时间,直到您的应用程序启动并运行。

但是,当您的应用程序已经运行一段时间时,您肯定不希望遇到阻塞时刻。

所以,如果你没有第二种选择非常特殊的原因,去的第一个。

我相信第二种情况对于避免循环模块依赖是有用的,因为require()发生在运行时而不是加载时。

否则,我相信第一个(稍微?)更快,对我来说,更具可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM