gpt4 book ai didi

browserify - browserify 可以解决方法中的要求调用吗

转载 作者:行者123 更新时间:2023-12-04 04:55:37 29 4
gpt4 key购买 nike

我有

带有插件系统的软件包。每个插件都是一个包
可以通过调用 use 方法来加载插件。并将插件导出作为参数传递:

package = require('thePackage').use( require('thePlugin'), require('anotherPlugin'));

我想要

如果 use 的参数是一个字符串 use应该需要模块。
package = require('thePackage').use('thePlugin','anotherPlugin')

问题

browserify 可以解决 require 的这种用法吗? ?

我不确定 browserify 是否只查找 reqire在顶层调用或实际评估代码。

最佳答案

Browserify 进程只 require() 使用文字调用,即 require('theplugin');
它将 不是 包括可能需要的模块,例如:

function use(moduleName) {
require(moduleName);
}
use("someModule");

您可以通过查看 module-deps 在代码中看到它。 (这是用于扫描模块的模块)调用node-detective, by default returns only literals (字符串)用于 require() 调用。

你仍然可以实现你想要的,并在你的插件函数中使用带有参数的 require() ,但是你必须更明确地包含在你的浏览器包中的内容。如果 Browserify 看不到文字要求,它将不会遍历这些插件模块,因此您需要手动 --require 它们。
例如 browserify --require ./src/plugins/plugin.js
模块加载解析(即 require() 的参数)在 node.js 和浏览器化环境中可能不一样,所以如果你在 use() 函数中做一些聪明的模块名称解析,请小心。

关于browserify - browserify 可以解决方法中的要求调用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com