您展示的用法script
可能适用于早期版本的 XRegExp,但现在已过时,而且新用法似乎没有在任何地方记录。
xregexp-all.js
您可以使用标签加载,script
因为它在文件的开头有一个UMD 包装器,允许这种用法。但是,如果您查看XRegExp附带的已转译插件文件,您将在每个插件中看到如下代码:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (XRegExp) {
// ...
};
这告诉你两件事。一是插件是模块,句号。它们没有 UMD 包装器,因此script
无法加载它们。其次,插件导出一件事:一个功能。正如参数名称所暗示的,您需要将 XRegExp 库本身传递给它,以便插件可以自行安装。src/index.js
在存储库的源代码中可以找到进一步的线索。它包含:
import XRegExp from './xregexp';
import build from './addons/build';
import matchRecursive from './addons/matchrecursive';
import unicodeBase from './addons/unicode-base';
import unicodeBlocks from './addons/unicode-blocks';
import unicodeCategories from './addons/unicode-categories';
import unicodeProperties from './addons/unicode-properties';
import unicodeScripts from './addons/unicode-scripts';
build(XRegExp);
matchRecursive(XRegExp);
unicodeBase(XRegExp);
unicodeBlocks(XRegExp);
unicodeCategories(XRegExp);
unicodeProperties(XRegExp);
unicodeScripts(XRegExp);
export default XRegExp;
在使用 安装 XRegExp 之后npm
,这是我在我的一个项目中使用的(它必须在 ES5 引擎上按原样运行),我想加载 XRegExp 只带有一些 Unicode 插件,没有别的:
var XRegExp = require("xregexp/lib/xregexp");
var base = require("xregexp/lib/addons/unicode-base");
var blocks = require("xregexp/lib/addons/unicode-blocks");
var categories = require("xregexp/lib/addons/unicode-categories");
base(XRegExp);
blocks(XRegExp);
categories(XRegExp);
此代码在 Node 中工作,并且也被 Webpack 正确处理以在浏览器中使用。