使用 Cheerio、NodeJs 从文件追加 HTML
append HTML from file with Cheerio, NodeJs
我正在尝试使用 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());
});
}
它似乎不喜欢将变量传递给追加函数。
如果我将 html 放入而不是从文件中调用,它会工作,如下所示:
$('body').append('<div class="nav"> navigation list here</div>');
但我不希望这样,因为我希望前端开发人员能够编辑 HTML 文件,而不是深入研究我的节点 JS 代码来查找更改 html 的位置。
我已经解决了。我假设其他人可能会 运行 解决这个问题,因为我认为这是一个普遍的需求。所以这就是答案。
您需要指定您希望它作为缓冲区的字符串返回。使用 '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());
});
}
我正在尝试使用 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());
});
}
它似乎不喜欢将变量传递给追加函数。
如果我将 html 放入而不是从文件中调用,它会工作,如下所示:
$('body').append('<div class="nav"> navigation list here</div>');
但我不希望这样,因为我希望前端开发人员能够编辑 HTML 文件,而不是深入研究我的节点 JS 代码来查找更改 html 的位置。
我已经解决了。我假设其他人可能会 运行 解决这个问题,因为我认为这是一个普遍的需求。所以这就是答案。
您需要指定您希望它作为缓冲区的字符串返回。使用 '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());
});
}