快递和Cheerio/JSDOM

Express and Cheerio/JSDOM

我正在尝试让 Cheerio 与 Express 一起工作。 我希望能够从服务器操纵 dom,但我发现的只是网络抓取..

有一些要求..

目前,我能够 运行 多个 app.listen(port); 语句,并使用多个服务器。

我正在尝试将 <script>alert("test);</script> 附加到快递发送的每一页。

我已经创建了快速服务器:(假设 Path 是一个预定义变量)

var express = require('express');
var app = express();    
app.get('/', function (req, res) {
        app.use(app.static(Path));
        res.sendFile(Path + "/index.html");
    });
app.listen(Port);

你们能给我一个工作示例来将其附加到页面上吗?有没有办法让它实时工作?

谢谢!

这是一个没有错误处理的 quick/simple 示例:

var express = require('express');
var fs = require('fs');
var cheerio = require('cheerio');

var app = express();

app.get('/', function (req, res) {
    fs.readFile(Path + '/index.html', function(err, data) {               
        var $ = cheerio.load(data);

        $('body').append('<script>alert("test");</script>');

        res.send($.html());
    });
 });

app.listen(Port);

我刚刚在本地测试了它,它按预期工作。请务必在实际实现中的 readFile 回调中测试 err,并在找不到文件或读取文件时出现错误时适当处理。