Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 为什么我需要每个文件上的所有模块?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么我需要每个文件上的所有模块?

Javascript 为什么我需要每个文件上的所有模块?,javascript,node.js,Javascript,Node.js,我经常看到的默认方法是: // repeat this in all files var express = require('express'); var mongoose = require('mongoose'); var async = require('async'); ... 但在我的NodeJS应用程序中,我正在这样做: // include this only on the server file _express = require('express'); _mon

我经常看到的默认方法是:

// repeat this in all files
var express  = require('express');
var mongoose = require('mongoose');
var async    = require('async');
...
但在我的NodeJS应用程序中,我正在这样做:

// include this only on the server file
_express  = require('express');
_mongoose = require('mongoose');
_async    = require('async');
...
我更喜欢使用
前缀来标识lib/模块,而不使用
var
,因为我不想在应用程序的每个文件上重复所有包的require/setup

这样我就可以在server.js文件上只使用一次
require()
模块,并在任何地方使用它


这是个坏主意吗?

模块缓存在NodeJ中。最好的做法是在需要的地方提出要求

从node.js文档:

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

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


在前端开发中(如果这不仅仅是服务器端节点问题),您肯定可以在基本js或主js上创建需求,并通过将它们附加到窗口中来全局引用它们,文档或任何其他范围很广的对象,但最佳做法是仅在需要时才需要和加载模块。

我认为全局保持依赖关系是“不好的做法”。并不是说没有优先权(因为在任何地方都使用全局别名可能非常方便),而是要谨慎行事,而不是作为默认选择。你能更好地解释这一点吗?这是关于内存开销的吗?例如,猫鼬。。。我需要模块并始终连接它?这是个好习惯吗?你只连接一次。当您需要在其他模块中使用mongoose时,您需要
var mongoose=require('mongoose')
和您的连接得到相同的mongoose对象。您可以通过执行
console.log(mongoose.connection)来测试这一点在您的模块中。应该注意,您可以使用
mongoose.createConnection
与mongoose建立其他连接。默认连接(
mongoose.connection
)是与
mongoose.connect