我经常看到的默认方法是:
// 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');
...
我更喜欢使用_
前缀来标识libs / modules而我不使用var
因为我不想在我的应用程序的每个文件上重复所有包的require / setup
这样我就可以在server.js文件上require()
模块一次,并在任何地方使用它。
这是个坏主意吗?
答案 0 :(得分:5)
模块缓存在nodejs中。最佳做法是在需要时提出要求。
来自node.js docs:
模块在第一次加载后进行缓存。这意味着 (除此之外)每个要求的呼叫(' foo')都会得到 返回完全相同的对象,如果它将解析为相同 文件。
多次调用require(' foo')可能不会导致模块代码 多次执行。这是一个重要的特征。用它, "部分完成"可以返回对象,从而允许传递 即使它们会导致循环,也要加载依赖项。
答案 1 :(得分:1)
在您的前端开发中(如果它不仅仅是服务器端节点问题)您肯定可以在基础或主要js上提出要求,并通过将它们附加到窗口来全局引用它们,文档或任何其他高度范围的对象,但最佳做法是仅在需要时才需要和加载模块。