繁体   English   中英

Node.js模块加载

[英]Node.js module loading

我目前正在使用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如何加载其模块。 如果正在根据需要进行加载,那么此实现肯定会减慢它的速度吗?

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

引用node.js 文档

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

多次调用require('foo')可能不会导致模块代码多次执行。 这是一个重要功能。 使用它,可以返回“部分完成”的对象,从而即使在可能导致循环的情况下,也可以加载传递依赖。

暂无
暂无

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

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