0

我目前正在使用 Node 构建一个 Web 应用程序,我很好奇 Node 如何加载其所需的文件或模块。

我正在使用 express 进行视图和服务器配置,但是我发现所有 Node 示例(我知道 express 提供了一个 MVC 示例)并不真正符合一般的 MVC 模式。我也知道 Node 不一定适合 MVC,但请耐心等待,因为我喜欢 MVC。

如果您考虑以下路由声明,将其用作控制器将是有效的,因为您可以在这里控制请求和响应逻辑:

module.exports = function (app) {

app.get('/', function (req, res) {

    res.render('index', { layout: false });


});

为了尝试并遵循 MVC 架构,我有效地将路由划分为其相关路径,从而有效地创建控制器。但是,每当我有不同的路由文件时,它都必须包含自己的一组必需模块。例如:

var mongo = require('mongoskin');

然后,我将在包含服务器配置设置的 app.js 或 server.js 文件中声明所需的路由文件。

我想知道这样拆分路由是否会减慢应用程序的速度,因为我不知道 Node 如何加载其模块。如果它是根据需要加载的,那么这个实现肯定会减慢它的速度吗?

4

2 回答 2

4

所需的模块只加载一次然后缓存,因此您可以随意将您的应用程序分解为尽可能多的模块,以清晰地组织您的应用程序。如果您有 20 个调用 的文件require('mongoskin'),则该模块仍然只加载一次。

于 2013-01-30T15:22:50.160 回答
2

引用 node.js文档

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

多次调用 require('foo') 可能不会导致模块代码被多次执行。这是一个重要的特点。有了它,可以返回“部分完成”的对象,从而允许加载传递依赖项,即使它们会导致循环。

于 2013-01-30T15:23:11.877 回答