使用AngularJS app中CasperJS脚本的输出

时间:2014-12-22 03:25:31

标签: javascript angularjs node.js casperjs

我用yeoman.io创建了一个angular.js单页应用程序,它有一个app.js来管理路由,一些mycontroller.js脚本和一个index.html,它有一堆" bower_components&#34 ;我使用" bower install libraryname --save"安装的库的引用从命令行。

我还在一个单独的文件中有一个casperjs脚本,它打开一个网站,提取html并将我想要的相关数据放入一个json对象中,其代码如下所示:

var casper = require('casper').create){
blah
});

casper.start( url, function(){
blah
});

casper.thenOpen( url, function(){
blah
});

casper.run();

当我从命令行运行脚本时,脚本执行我想要的操作:" casperjs myscript.js"。

我跑了" npm install casperjs",这成功了,但是当我使用" bower安装casperjs --save"它没有像我在jquery-ui中那样将casper的引用添加到我的app中的index.html文件中。所以我自己通过查找在" node_modules"中安装casperjs的位置来手动添加它。

我的目标是将我的casperjs脚本输出到我的angularjs控制器中,但我不确定你是否可以使用" require(' casper')。创建"在角度上下文中,浏览器控制台(和grunt)抱怨"要求"是未定义的,即使我已将node_modules链接包含到js文件中。我是角度,节点和javascript的新手,所以我不确定它们是如何组合在一起的,我已经读过你可能需要生成进程来运行casperjs,或者从stdout获取输出,但我不知道真的明白这意味着什么,或者为什么我不能把我的casper js称为角度函数。

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:0)

CasperJS构建于PhantomJS之上,PhantomJS是一款无头浏览器。您无法直接在客户端浏览器中运行CasperJS或PhantomJS脚本。但是,您可以在服务器上运行它们并将输出通过节点传递给客户端。另请注意,CasperJS和PhantomJS与node.js的运行时间不同,因此您不能简单地require它们。您必须使用child_process