在前端开发中,我们常常需要将字符串进行分割、解析或者处理。此时,一个好的tokenize工具对于我们的开发效率极为重要。而Tokenize-sync 就是一个出色的 npm 包,它可以让我们快速、高效地将字符串解析成tokens,同时也支持我们自定义 tokens 的处理方式。
Tokenize-sync 简介
Tokenize-sync 是一个 npm 包,用于将字符串解析为token流。 这个包是同步解析代码,执行效率很高。 它支持作为一个原语 parser 在一些地方使用, 如query-string, tokenizer等等。Tokenize-sync 能够处理任何字符串内部的token,可以非常容易地定制tokens分离器。无需使用异步任务或任何FS操作即可解析完整的代码。
Tokenize-sync 支持以下特性:
- 支持自定义 token 分割器
- 支持回调函数处理特定的 tokens
- 支持定制化的输出格式
- 高效且易于使用
Tokenize-sync 安装
Tokenize-sync 是一个 npm 包,因此需要先安装 Node.js 和 npm 包管理器才能使用。下面是安装方法:
npm install -S tokenize-sync
Tokenize-sync 使用
使用 tokenize 方式
以下是最简单的使用 tokenize 的方式:
const tokenize = require('tokenize-sync'); const code = '1 * 2 + 3 / 4 - 5'; const tokens = tokenize(code); console.log(tokens);
最终输出的 tokens 如下:
-- -------------------- ---- ------- - - ----- --------- ------ ---- ----- -- ------- - -- - ----- ----------- ------ ---- ----- -- ------- - -- - ----- --------- ------ ---- ----- -- ------- - -- - ----- ----------- ------ ---- ----- -- ------- - -- - ----- --------- ------ ---- ----- -- ------- - -- - ----- ----------- ------ ---- ----- -- ------- -- -- - ----- --------- ------ ---- ----- -- ------- -- -- - ----- ----------- ------ ---- ----- -- ------- -- -- - ----- --------- ------ ---- ----- -- ------- -- - -
解析 HTML
Tokenize-sync 也可以用于解析 HTML 代码。以下是示例代码:
-- -------------------- ---- ------- ----- -------- - ------------------------- ----- ---- - ----- ---------------- ---------------- ------------- ----- ------ - -------------- - ---- ---- ---------- -------------------------------------- ----- ------- --- --------------------
解析结果:
-- -------------------- ---- ------- - - ----- ------ ------ ---- ----- -- ------- - -- - ----- ------- ------ ------ ----- -- ------- - -- - ----- ------------ ------ --------------------- ----- -- ------- - -- - ----- ------------ ------ --------------- ----- -- ------- -- -- - ----- ------ ------ ---- ----- -- ------- -- -- - ----- ------- ------ ------ ------- ----- -- ------- -- -- - ----- ------ ------ ---- ----- -- ------- -- -- - ----- ------- ------ ------- ----- -- ------- -- -- - ----- ------ ------ ---- ----- -- ------- -- - -
使用自定义 tokenizer
使用 Tokenize-sync 解析器时,需要输入一个字符串和一个配置项。对于位于输入字符串中的每个token,解析器通过匹配正则表达式将字符串中的文本解析为可用于处理的tokens流。下面是一个自定义 tokenizer 的示例:
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- ---- - --- - -- - - - --- ----- --------- - --- ------------------------ ------- - - ----- ------------- -------- ---- -- - ----- -------------- -------- ---- -- - ----- --------- -------- -------- -- - ----- ----------- -------- ---------- - - --- ----- ------ - ------------------------- --------------------
在上面的示例代码中,我们按照自己的需求定义了自定义的 tokenizer。tokens
数组中定义了每一个 token,并指定了对应的正则表达式,Tokenizer 将根据这些正则表达式判断输入字符串中每个 token 的类型。
输出结果如下:
-- -------------------- ---- ------- - - ----- ------------- ------ ---- ----- -- ------- - -- - ----- --------- ------ ---- ----- -- ------- - -- - ----- ----------- ------ ---- ----- -- ------- - -- - ----- --------- ------ ---- ----- -- ------- - -- - ----- -------------- ------ ---- ----- -- ------- - -- - ----- ----------- ------ ---- ----- -- ------- - -- - ----- --------- ------ ---- ----- -- ------- -- -- - ----- ----------- ------ ---- ----- -- ------- -- -- - ----- --------- ------ ---- ----- -- ------- -- - -
使用回调函数处理 Tokens
除了将 tokens 作为数组返回,Tokenize-sync 还支持在解析过程中使用回调函数来处理特定的 Tokens。以下是示例代码:
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- ---- - --- - -- - --- ----- ------ - --- ----- --------- - --- ------------------------ ------- - - ----- ------------- -------- ---- -- - ----- -------------- -------- ---- -- - ----- --------- -------- --------- -------- ------- -- - ----------- - ---------------------- ------------------- - -- - ----- ----------- -------- ---------- - - --- ------------------------- --------------------
在上面的示例中,我们将 number
token 的 onMatch
回调函数设置为将 token 的值从字符串转换为整数并将其添加到tokens数组中。 最终输出的 tokens 数组为:
[ { type: 'number', value: 1, line: 1, column: 1 }, { type: 'operator', value: '+', line: 1, column: 3 }, { type: 'number', value: 2, line: 1, column: 5 }, { type: 'close-paren', value: ')', line: 1, column: 7 }, { type: 'operator', value: '*', line: 1, column: 9 }, { type: 'number', value: 3, line: 1, column: 11 } ]
Tokenize-sync 总结
在本文中,我们讲解了如何使用 Tokenize-sync 这个出色的 npm 包。Tokenize-sync 可以高效地将字符串解析成 tokens,并且支持自定义token 分割字符、回调函数处理特定的 tokens、自定义输出格式等功能。希望读者们在实际工作中能够充分利用 Tokenize-sync 提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566c381e8991b448e321a