假设我创建了一个库./libname
其中包含一个主文件:main.js
以及偶尔与主对象一起使用的多个可选库文件:a.js
and b.js
.
我创造index.js
文件包含以下内容:
exports.MainClass = require('main.js').MainClass; // shortcut
exports.a = require('a');
exports.b = require('b');
现在我可以按如下方式使用该库:
var lib = require('./libname');
lib.MainClass;
lib.a.Something; // Here I need the optional utility object
lib.b.SomeOtherThing;
然而,这意味着我总是加载“a.js”和“b.js”,而不是在我真正需要它们时加载它们。
当然我可以手动加载可选模块require('./libname/a.js')
,但后来我失去了美丽lib.a
点符号:)
有没有办法实现某种索引文件的按需加载?也许,一些package.json
魔法在这里能发挥得很好吗?
如果您调用“MainClass”来按需动态加载附加模块,则这可能是可能的。但我怀疑这也意味着对 api 进行调整以访问该模块。
我猜你的动机是“避免”“非必需模块”使用的额外处理。
但请记住 Node 是单线程的,因此加载模块的内存占用不是每个连接的,而是每个进程的。加载模块是将其加载到内存中的一次性操作。
换句话说,这些模块仅在您启动服务器时加载,而不是每次有人发出请求时加载。
我认为您从客户端编程的角度来看这个问题,当需要节省处理和/或 http 请求时加载脚本是有优势的。
在服务器上,您最多可以节省内存中的一些额外字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)