【发布时间】:2014-10-27 04:10:38
【问题描述】:
给定一个运行a D3js dynamic dataviz的JS脚本
我目前使用以下方法将单个视图打印到 output.svg 文件中:
var jsdom = require('jsdom');
jsdom.env(
"<html><body></body></html>", // CREATE DOM HOOK:
[ 'http://d3js.org/d3.v3.min.js', // JS DEPENDENCIES online ...
'js/d3.v3.min.js' ], // ... & offline
// D3JS MAP DRAWING CODE * * * * * * * * * * * * * * * * * * *
function (err, window) {
var svg = window.d3.select("body")
.append("svg") // append svg on body
... // more D3js code
// END svg design
//PRINTING OUT SELECTION
console.log(window.d3.select("body").html());
}
// END (D3JS) * * * * * * * * * * * * * * * * * * * * * * * *
);
终端 NodeJS 命令:
node svgcreator.node.js > output.svg
它的工作方式是将来自svgcreator.node.js 脚本的每个console.log() 消息打印到文件output.svg 文件中。
由于这个 D3js dataviz 环绕全球,应该可以将每个视图的 console.log() 消息打印到正确命名的正确 svg 文件中。我想我应该从 JS 脚本到终端中获取一个变量,例如 var country=...;。然后,我可以做 (?) 这样的事情:
node svgcreator.node.js > $(JsVar.country).svg # nb: this var syntax if fictional
因此,无论何时出现 console.log() 消息,该消息都会以正确的名称打印到 SVG 文件中。
另外,如何将JS变量的值从脚本传递到终端?
另见:Node.js : how to pass parameter's value from terminal to JS script
【问题讨论】:
-
我只是尝试在JS代码中做
process.env.country = currentCountryName;,然后在终端中输入node svgcreator.node.js > $country.svg的变体,但没有成功。 -
您是否只是在寻找一种将输出保存到适当命名的文件的方法?文件需要在shell中通过stdout重定向创建,还是node自己创建文件可以吗?
-
我是 nodejs 的新手并使用我所知道的方式,但是 node 可以创建文件,因为它是一个有效的 SVG,其代码是由我的 D3js 代码生成的。