【问题标题】:append HTML from file with Cheerio, NodeJs使用 Cheerio、NodeJs 从文件中附加 HTML
【发布时间】:2015-06-18 13:58:54
【问题描述】:

我正在尝试使用cheerio 将一些html 从文件附加到一些现有的html,但我不断收到错误(错误是由cheerio 库产生的,因此很难调试)

expo.includeNav = function(html, result)
{
    var file = 'templates/admin_nav.html';

    fs.readFile(file, function(err, nav)
    {
        var $ = cheerio.load(html);
        $('body').append(nav);
        result($.html());

    });

}

它似乎不喜欢将变量传递给 append 函数。

如果我将 html 放入而不是从文件中调用它可以工作,如下所示:

$('body').append('<div class="nav"> navigation list here</div>');

但我不希望这样,因为我希望前端开发人员能够编辑 HTML 文件,而不是深入我的节点 JS 代码来查找更改 html 的位置。

【问题讨论】:

  • nav的值是多少?
  • 我现在将 nav 的值添加到我的问题中。
  • 我已添加到问题中:)
  • 如果我缩小 HTML 并将其粘贴到 .append('') 上,它可以正常工作。
  • iv 发现使用 $('body').html(nav);有效,但是cheerio 使用 $.html() 所以它歪曲了 hte 页面的其余部分......建议?

标签: jquery html node.js append cheerio


【解决方案1】:

我已经解决了。我认为其他人可能会遇到这个问题,因为我认为这是一个常见的需求。所以这就是答案。

您需要指定您希望它以字符串的形式返回,而不是缓冲区。用'utf8'来做这个

expo.includeNav = function(html, result)
{
    var file = 'templates/admin_nav.html';

    fs.readFile(file, 'utf8', function(err, nav)
    {
        var $ = cheerio.load(html);
        $('body').append(nav);
        result($.html());

    });

}

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 2016-06-05
    • 2015-10-07
    • 2023-03-31
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2015-10-11
    • 2018-11-21
    相关资源
    最近更新 更多