我怎样才能只用几个插件加载 XRegExp?
How can I load XRegExp only with a few addons?
我搜索了 XRegExp 的 web site, and the GitHub readme。那里唯一的示例加载 xregexp-all.js
,这正是我不想做的,因为它加载了所有插件。在 SO 上搜索,我找到了这样的例子:
<script src="xregexp.js"></script>
<script src="addons/unicode-base.js"></script>
<script src="addons/unicode-categories.js"></script>
但尝试以上只会导致 ReferenceError: exports is not defined
。
如何只加载 XRegExp 的部分插件?
您在 script
中显示的用法可能适用于 XRegExp 的早期版本,但现在已过时,而且似乎没有任何地方记录新用法。
您可以使用 script
标记加载 xregexp-all.js
,因为它在文件的最开头有一个 UMD wrapper,允许这种用法。但是,如果您查看 XRegExp 附带的 transpiled 插件文件,您会在每个插件中看到如下代码:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (XRegExp) {
// ...
};
这告诉你两件事。一是插件是模块,期间。他们没有 UMD 包装器,所以用 script
加载它们是行不通的。其次,插件导出一件事:一个函数。正如参数名称所暗示的那样,您需要将 XRegExp 库本身传递给它,以便插件可以自行安装。在存储库的 src/index.js
source 中可以找到进一步的线索。它包含:
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;
在使用 npm
安装 XRegExp 之后,这就是我在我的项目中使用的(在 ES5 引擎上必须 运行 原样),我想在其中仅使用一些 Unicode 加载 XRegExp插件,仅此而已:
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 正确处理以在浏览器中使用。
我搜索了 XRegExp 的 web site, and the GitHub readme。那里唯一的示例加载 xregexp-all.js
,这正是我不想做的,因为它加载了所有插件。在 SO 上搜索,我找到了这样的例子:
<script src="xregexp.js"></script>
<script src="addons/unicode-base.js"></script>
<script src="addons/unicode-categories.js"></script>
但尝试以上只会导致 ReferenceError: exports is not defined
。
如何只加载 XRegExp 的部分插件?
您在 script
中显示的用法可能适用于 XRegExp 的早期版本,但现在已过时,而且似乎没有任何地方记录新用法。
您可以使用 script
标记加载 xregexp-all.js
,因为它在文件的最开头有一个 UMD wrapper,允许这种用法。但是,如果您查看 XRegExp 附带的 transpiled 插件文件,您会在每个插件中看到如下代码:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (XRegExp) {
// ...
};
这告诉你两件事。一是插件是模块,期间。他们没有 UMD 包装器,所以用 script
加载它们是行不通的。其次,插件导出一件事:一个函数。正如参数名称所暗示的那样,您需要将 XRegExp 库本身传递给它,以便插件可以自行安装。在存储库的 src/index.js
source 中可以找到进一步的线索。它包含:
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;
在使用 npm
安装 XRegExp 之后,这就是我在我的项目中使用的(在 ES5 引擎上必须 运行 原样),我想在其中仅使用一些 Unicode 加载 XRegExp插件,仅此而已:
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 正确处理以在浏览器中使用。