以下内容来源于babel官方网站关于generator的介绍:
https://babeljs.io/docs/en/babel-generator
所给的示例代码如下:
-
import { parse } from "@babel/parser";
-
import generate from "@babel/generator";
-
-
-
const code = "class Example {}";
-
const ast = parse(code);
-
-
-
const output = generate(
-
ast,
-
{
-
/* options */
-
},
-
code
-
);
可以看到 generate函数有个 options选项,那这个选项可以完成哪些功能呢?
官网也很温馨的给出了所有的options,如下表。
我列举其中几个功能进行下演示,更多的功能直接看表格即可。
Options功能一
Unicode转中文或者其他非ASCII码字符。
代码
const output = generator(ast,opts = {jsescOption:{"minimal":true}},code);
应用场景
在js的混淆代码中,越来越多的使用Unicode来对可识别的中文字符进行编码,这样非常的不利于查找和分析。
Options功能二
代码压缩
代码
const output = generator(ast,opts = {"compact":true},code);
应用场景
著名的在线混淆网站obfuscator,有个对代码检测的选项,如果发现代码被格式化,则进入死循环,直至内存耗尽为止。如果将该代码格式化后eval到处理混淆的代码中,也将内存溢出,因此将这部分代码进行压缩,在eval到处理混淆的代码中,即可正常调用解密函数。
Options功能三
删除所有注释
代码
const output = generator(ast,opts = {"comments":false},code);
应用场景
代码很简单,注释又非常多的时候,有时候注释反而烦人。
文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq523176585/article/details/110298488