在大型项目中替换字符串

时间:2014-09-15 15:32:44

标签: jquery html node.js

我有一个包含大量静态html文件的大型Web项目。有没有办法用node.js操作这些文件?我的意思是,如果我想更改50个文件的tabindex,我可以做一些选择,如

$('input.myClass').attr('tabindex', '-1');

并将其应用于所有?我可以这样操纵我的项目文件吗?根据某些标准修改,替换字符串?

我自动执行大型更改的唯一选择是bash(现在),但我认为花这么多时间为css选择器构建自定义脚本不是一个好主意。

1 个答案:

答案 0 :(得分:1)

这是一个使用cheerio的简单脚本,演示了如何操作html文件。假设html看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <title>My Test Page</title>
</head>
    <body>
        <ul id="fruits">
            <li class="apple">Apples</li>
            <li class="orange">Orange</li>
            <li class="pear">Pear</li>
        </ul>
    </body>
</html>

添加tabindex的脚本如下所示:

#!/usr/bin/env node 
var fs = require('fs'),
    cheerio = require('cheerio');

fs.readFile('index.html', { encoding:'utf-8' }, function(err, data) {
    if (err) throw err;

    var $ = cheerio.load( data );

    var apple = $('.apple');

    apple.attr('tabindex', '-1');

    // now write the file out
    console.log( $.html() );
});

修改后的html现在看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <title>My Test Page</title>
</head>
<body>
<ul id="fruits">
    <li class="apple" tabindex="-1">Apples</li>
    <li class="orange">Orange</li>
    <li class="pear">Pear</li>
</ul>
</body>
</html>