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