我正在浏览Node中命令行实用程序的源代码,并看到以下代码。节点:需要模块内部功能吗?
function help() {
var colors = require('colors');
var package = require('../package');
....
....
}
我以前没见过要这样用在函数里面。我总是认为最好的做法是将它包含在文件的顶部。这是这个程序的入口文件,这个函数只在特定的情况下被调用,但是这些程序包在程序的其他地方使用。当我向代码作者推荐他的推理时,他只是表示他“不想一次导入所有的库”。
这是好的/不好的做法?通过不需要模块顶部的这些软件包,而是仅在调用这些函数时才会对装入时间产生重大影响?
不清楚你在问什么,只是一个建议? – Farside
这意味着在需要的时候随时随地包括所需的东西,而不是一次性的 –
一个潜在的缺点是您将同步I/O引入到服务器的运行时行为中,这通常被认为是糟糕的设计模式。现在幸运的是,'require()'从缓存中运行,所以同步I/O只在第一次调用该函数时发生,这限制了影响,它可能是本地磁盘I/O,解析和运行JS文件潜在的依赖模块),但仍不被认为是最佳实践。通常,接受更多的加载时间比缓慢请求处理程序更好。 – jfriend00