Nodejs需要:一次还是按需?

Mik*_*ite 2 optimization node.js

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

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

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

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

function party() {
    return Post.getParty();
}
Run Code Online (Sandbox Code Playgroud)

VS

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

function party() {
    return require('../models/post').getParty();
}
Run Code Online (Sandbox Code Playgroud)

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

ebo*_*man 7

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


Gol*_*den 5

您应该require在开始时使用单个调用来定义使用该版本.虽然模块加载的频率没有任何差别(但是只有你加载模块才会加载一次),但第二种方式存在性能问题.

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

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

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