2

我想编写一个程序,在现有的 HTML 文件中向 JS 添加一行。我想我会使用 node.js,因为它是同一种语言。

我查看了许多项目,esprimaacornrocambolefalafelescodegen等,但我似乎找不到任何有关如何将节点添加到 AST 以创建新行的文档。我想知道解析工具是否是最好的选择——也许我会更好地使用字符串操作/正则表达式?我还想修改一些行以及添加新行。下面的代码是我目前必须在 javascript 中添加一行的非工作代码。

var newNode = JSON.parse(transparent);

// get html string here
fs.readFile(path.normalize('C:\myDoc'), function (err, html) {
    if (err) {
        throw err;
    }

    handler = new htmlparser.DomHandler(function (err, dom) {
        if (err) {
            sys.debug("Error: " + err);
        } else {
            //      console.log(dom);
            var scripts = select(dom, 'body script');

            scripts.forEach(function (script) {
                if (typeof script.attribs.src === 'undefined') {
                    var ast = rocambole.parse(script.children[0].data);
                    rocambole.recursive(ast, function (rootNode) {

                        if (rootNode.type == "VariableDeclaration") {
                            rocambole.recursive(rootNode, function (node) {
                                if (node.type === "Identifier" && node.name === "params") {
                                    // I need to insert a new node after rootNode here
                                    console.log(escodegen.generate(rootNode.root));
                                }
                            });
                        }
                    });
                }
            })
        }
    })
    new htmlparser.Parser(handler).parseComplete(html);
});
4

0 回答 0