Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript Node.js模块加载_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript Node.js模块加载

Javascript Node.js模块加载,javascript,jquery,node.js,Javascript,Jquery,Node.js,我目前正在用Node构建一个web应用程序,我很好奇Node如何加载它所需的文件或模块 我使用express进行视图和服务器配置,但是我发现所有节点示例(我知道express提供了一个MVC示例)都不符合一般的MVC模式。我也知道Node不一定适合MVC,但请容忍我,因为我喜欢MVC 如果您考虑下面的路由声明,则将其用作控制器是有效的,因为在这里您可以控制请求和响应逻辑: module.exports = function (app) { app.get('/', function (req,

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

我使用express进行视图和服务器配置,但是我发现所有节点示例(我知道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文件中声明所需的路由文件


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

所需的模块只加载一次,然后再加载,所以请随意将您的应用程序拆分为所需的多个模块,以便干净地组织您的应用程序。如果您有20个文件调用
require('mongoskin')
,则该模块仍然只加载一次。

所需模块只加载一次,然后再加载一次,因此请随意将您的应用分解为所需的多个模块,以便干净地组织您的应用。如果有20个文件调用
require('mongoskin')
,则该模块仍然只加载一次。

引用node.js:

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

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

从node.js引用:

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

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