javascript - 如何在CasperJS中编写基于数组的文件

标签 javascript casperjs

var z = ['111','222','333']
var x = ['zzz','yyy','xxx']
var fs = require('fs');
for(var y = 0; y < 3; y++)
    fs.writeFile('z[y].json', x[y]);

尝试在 casper/node.js 中执行上述操作,最好的方法是什么。

研究了使用文件流等的可能性,但无法准确理解如何进行。

最佳答案

CasperJS 构建于 PhantomJS 之上,可以访问其 File System Module 。该模块提供流式版本和单调用版本。

单次调用

由于您拥有的数组已经在内存中,因此如果您只使用文件内容创建一个字符串并将其完整写入,可能不会太糟糕:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
var s = "";
for(var y = 0; y < 3; y++)
    s + = x[y] + "\n";
fs.write('text.txt', s);

文件流

要使用文件流,您需要 open the stream first然后写入:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
var f = fs.open("text.txt", 'w');
for(var y = 0; y < 3; y++)
    f.write('text.txt', x[y] + "\n");
f.close();

单次调用附加器

当然你也可以使用appender,但是效率很低,因为文件被打开和关闭多次:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
for(var y = 0; y < 3; y++)
    fs.write('text.txt', x[y] + "\n", 'a');

将单个字符串放入多个文件

您似乎想将单个不同的字符串写入不同的文件中。您根本不需要流。只需循环使用第一个建议:

var fs = require('fs');
var z = ['111','222','333']
var x = ['zzz', 'yyy', 'xxx'];
for(var y = 0; y < 3; y++)
    fs.write(z[y]+'.json', x[y]);
<小时/>

请注意,PhantomJS(和 CasperJS)的执行环境与 node.js 不同。您不能简单地在 CasperJS 或 PhantomJS 中使用节点模块。

关于javascript - 如何在CasperJS中编写基于数组的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140771/

相关文章:

javascript - vb.net - 执行 selenium ChromeDriver javascript

javascript - document.querySelectorAll ("input[type=checkbox"的结果数组的顺序是否得到保证?

javascript - 使用 CasperJS 中的函数返回多级 iframe 内的链接

javascript - CasperJS/PhantomJS ES6 Promise Polyfill

javascript - 使用 casperjs 轮询 RSS 提要不起作用

javascript - 使用 JavaScript 向 AjaxControlToolkit.HTMLEditor 插入值

javascript - jquery.each - 将计数器传递给子 .onload 函数

javascript - 两次点击触发双击事件之间的最大延迟是多少?

phantomjs - CasperJS:禁用远程页面的javascript但仍然使用casper.evaluate?

javascript - 使用 CasperJS 单击第二张图像