我正在浏览Node中命令行实用程序的源代码,并看到以下代码.
function help() { var colors = require('colors'); var package = require('../package'); .... .... }
我之前没有看到过要求以这种方式使用函数.我一直认为最好将它包含在文件的顶部.这是此程序的入口文件,此函数仅在特定情况下调用 – 但这些包在程序的其他位置使用.当我向代码的作者询问他的推理时,他只是说他“不想一次导入所有的库”.
解决方法
更新:
我想这里有一个更好的答案:
Lazy loading in node.js
我想这里有一个更好的答案:
Lazy loading in node.js
我的初步意见:
嗯,这是一个练习的问题,有些人喜欢它在顶部,而有些人喜欢懒惰.在我看来两者都很好,并且应该根据需要使用,所以我认为作者就在这里,因为在启动时加载一大堆库会使模块超载大部分从未使用过的东西,因此会增加加载时间.虽然按需加载库是一个同步操作,但如果我们将帮助方法看作一个实体,那么它将给出一个异步模块加载效果(见AMD,这是一种流行的模式).
如果您必须在特定情况下加载哪些库之间做出选择,例如,延迟加载也是一个很好的选择
var isOSX; // some code here which finds if this is OSX // then this if (isOSX === true) { var platformHelper = require('supercoolosxhelper'); } else { var platformHelper = require('yetanothercoolhelper'); }
简而言之,你应该在你的代码中预测使用方法的概率是高还是中等,那么你应该要求在顶部,否则如果它很低那么如果需要的话需要模块就好了.