带有插件系统的包。每个插件都是一个包
可以通过共享方法use
来加载插件,并将插件导出作为参数传递:
package = require('thePackage').use( require('thePlugin'), require('anotherPlugin'));
如果use
的参数是字符串use
,则需要该模块。
package = require('thePackage').use('thePlugin','anotherPlugin')
浏览器可以解决require
的使用情况吗?
我不确定浏览器是否仅在顶级列表中查找reqire
次调用,或者是否真的让代码得到了回复。
答案 0 :(得分:3)
Browserify进程只需要用文字调用require(),即require('theplugin'); 它将不包含以下内容所需的模块:
function use(moduleName) {
require(moduleName);
}
use("someModule");
您可以在代码中看到它,方法是查看调用node-detective的module-deps(用于扫描模块的模块),其中by default returns only literals(字符串)用于require()调用。
您仍然可以实现您想要的功能,并在函数内部使用带有参数的require()插件,但是您必须更清楚地了解您在浏览器化软件包中包含的内容。如果不能看到文字要求,Browserify将不会遍历这些插件模块,因此您需要 - 手动查询它们。
例如browserify --require ./src/plugins/plugin.js
模块加载解析(即require()的参数)在node.js和浏览器化环境下可能无法正常工作,因此如果你在use()函数中做了一些聪明的模块名称解析,请小心。 / p>