2016-12-14 43 views
0

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

这是可能的节点?

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

请在这方面的帮助。

+0

在我看来,angularJS是网页渲染的最佳Node模块之一 – Grey

+0

感谢您的意见。目前我们试图解决的问题是:我们应该能够在后台加载浏览器中的html字符串,它应该在内部调用所有ajax调用来获取数据,并根据检索到的数据运行少量脚本来更新HTML DOM。从而,整个HTML将被渲染。然后,我们应该能够将整个呈现的HTML内容作为字符串获取。请帮忙。 – user3220129

+0

如果需要创建添加到请求页面的模板,是不是更好?使用Ajax获取十几个不同的HTML元素,如果你有很多用户一次使用你的网站,那么获取内容本身就会对服务器造成严重的负担,最好是获取你需要的数据,然后发送给客户端将其呈现在那里,而不是在服务器上呈现它,然后将其发送给用户 – Grey

回答

0

听起来像你在寻找NodeJS的无头浏览器。看到这里http://github.com/dhamaniasad/HeadlessBrowsers

列表这是例如,从CasperJS

您可以安装为节点模块

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 
+0

谢谢。 这行“var casper = require('casper')。create();”显示错误“无法找到模块casper”。 为了确认,我们已经相应地安装了节点模块“casperjs”。 请帮忙。 – user3220129

+0

下面是我放在node.app app.js中的代码。 var casper = casperjs.create(); casper.start('http://www.google.fr/',function(){ this.echo(this.getHTML()); }); casper.run(); 然后,当尝试使用命令“node app.js”使用节点运行时,会看到错误“无法找到模块casper”。 – user3220129

+0

@ user3220129 casperjs需要它自己的运行时。为nodejs兼容尝试Nightmare。我编辑了答案。 – Hereblur