我想编写一个程序,在现有的 HTML 文件中向 JS 添加一行。我想我会使用 node.js,因为它是同一种语言。
我查看了许多项目,esprima、acorn、rocambole、falafel、escodegen等,但我似乎找不到任何有关如何将节点添加到 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);
});