【问题标题】:Rendered HTML output using nodejs使用 nodejs 渲染 HTML 输出
【发布时间】:2017-04-29 14:14:31
【问题描述】:

我们需要将输入的 HTML 字符串加载到浏览器类型的环境中,运行 html(它应该在内部运行所有内联脚本,即有一些 ajax 调用),然后提供呈现的 HTML 作为输出。

节点可以做到这一点吗?

是否有任何我们可以用于此目的的节点模块。

请在这方面提供帮助。

【问题讨论】:

  • angularJS 在我看来是用于网页渲染的最佳 Node 模块之一
  • 感谢您的意见。我们正在尝试解决的当前问题是;我们应该能够在后台在浏览器中加载 html 字符串,这应该在内部进行所有 ajax 调用以获取数据,并且将运行很少的脚本来根据检索到的数据更新 HTML DOM。因此,将呈现整个 HTML。然后我们应该能够以字符串的形式获取整个呈现的 HTML 内容。请帮忙。
  • 如果需要,创建添加到请求页面的模板不是更好吗?如果您有很多用户同时使用您的网站,那么使用 Ajax 获取十几个不同的 HTML 元素并获取内容本身会对服务器产生很大的负担,最好获取您需要的数据,然后将其发送到客户端,在那里渲染,而不是在服务器上渲染然后发送给用户
  • 不会有任何服务器端命中。会有一个工具可以调用以获取呈现的 HTML。因此,不会存在多个用户的问题。
  • NodeJS 是服务器端的东西,它是你的服务器

标签: javascript html node.js node-modules


【解决方案1】:

听起来您正在为 NodeJS 寻找无头浏览器。在此处查看列表http://github.com/dhamaniasad/HeadlessBrowsers

这是来自CasperJS的示例

您可以安装为 Node 模块

npm install -g casperjs

var casper = require('casper').create();

casper.start('http://www.google.fr/', function() {
    this.echo(this.getHTML());
});

casper.run();

运行

casperjs app.js

对于 NODEJS 运行时

试试Nightmare

安装

npm install nightmare

代码

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: false });

nightmare.goto("http://www.google.com")
.evaluate(function(){
    return document.body.outerHTML;
})
.end()
.then(function (result) {
        console.log(result)
 })

运行

nodejs app.js

【讨论】:

  • 谢谢。这一行“var casper = require('casper').create();”显示错误“找不到模块 casper”。为了确认,我们已经相应地安装了节点模块“casperjs”。请帮忙。
  • 下面是我在 node-app 中的 app.js 中放置的代码。 var casper = casperjs.create(); casper.start('google.fr', function() { this.echo(this.getHTML()); }); casper.run();然后在尝试通过命令“node app.js”使用节点运行时,会看到错误“找不到模块 casper”。
  • @user3220129 casperjs 需要它自己的运行时。对于与 nodejs 兼容的尝试 Nightmare。我编辑了答案。
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 2016-11-13
  • 2015-09-24
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2023-03-29
相关资源
最近更新 更多