gpt4 book ai didi

javascript - 如何仅使用几个插件加载 XRegExp?

转载 作者:行者123 更新时间:2023-12-03 01:38:51 26 4
gpt4 key购买 nike

我搜索了 XRegExp 的 web site ,以及 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:未定义导出

如何仅使用 XRegExp 的某些插件加载 XRegExp?

最佳答案

您使用 script 显示的用法可能适用于早期版本的 XRegExp,但它现在已过时,并且新用法似乎没有记录在任何地方。

您可以使用 script 标记加载 xregexp-all.js,因为它具有 UMD wrapper在允许这种用法的文件的最开头。但是,如果您查看 XRegExp 附带的转译插件文件,您将在每个插件中看到如下代码:

'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 正确处理以在浏览器中使用。

关于javascript - 如何仅使用几个插件加载 XRegExp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50950224/

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