我正在用 Go 编写一个服务,并使用 phantomJS 从给定的 url 生成图像。在我的 Go 程序中,我使用 Exec 来启动 phantomJS 二进制文件。这工作正常,但现在我正在寻找一种方法来传递完整的代码以及运行二进制文件的调用。我的代码如下:
var args = require('system').args;
var webPage = require('webpage');
var page = webPage.create();
page.viewportSize = {
width: 1920,
height: 1080
};
page.open("http://www.url2fetch.com", function (status) {
var base64 = page.renderBase64('PNG');
console.log(base64);
phantom.exit();
});
这永远不会改变。除了要获取的网址:)。所以我的具体问题是:是否可以启动 phantomJS 并将上面的代码作为参数传递,以便可以通过一次调用来执行它。原因:我不想将 phantomjs 脚本与我的 Go 程序打包在一起。
最佳答案
PhantomJS 有一个交互式版本,您可以通过 stdin 传入代码,但有一个 bug (版本 1.9.x 和 2.0.0)因此无法打开任何页面,这使得它实际上无法使用。
无法将脚本传递到 PhantomJS 中进行解释。您需要至少有一个文件。您可以
创建一个与可执行文件一起提供的模板文件,并使用该文件和附加(URL)参数调用 PhantomJS 或
您从某个临时目录生成文件并让 PhantomJS 使用它。
如果您有理由相信写入时与使用时漏洞会被利用,那么您应该选择变体 1。
要使第一个案例完整,您可以使用 system.args
在 PhantomJS 中读取从 go 传递的命令行选项,例如 URL。
关于go - 将完整代码传递给phantomjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515665/