Node.js:如何将JSvariables的值从脚本传递给terminal?
给定一个运行D3jsdynamicdataviz的JS脚本
我目前打印出一个单一的视图到output.svg
文件使用:
svgcreator.node.js
:
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) * * * * * * * * * * * * * * * * * * * * * * * * );
terminalNodeJS命令:
node svgcreator.node.js > output.svg
它的工作方式是将svgcreator.node.js
脚本中的每个console.log()
消息svgcreator.node.js
到output.svg
文件中。
由于这个D3js dataviz环绕全球,应该可以将每个视图的一个console.log()
消息打印成正确命名的正确的svg文件。 我的事情我应该得到一个variables这样的var country=...;
从JS脚本到terminal 。 那么,我可以做(?)这样的事情:
node svgcreator.node.js > $(JsVar.country).svg # nb: this var syntax if fictional
所以无论何时发出console.log()消息,消息都会以正确的名称打印到SVG文件中。
另外, 如何将JSvariables的值从脚本传递给terminal?
另请参见: Node.js:如何将参数的值从terminal传递给JS脚本
最简单的做法是让节点直接写入文件,而不是试图使用> somefile.svg
。
这样做的代码非常简单。 假设您的脚本中有一个名为country
的variables,其中包含要为其创build.svg
的国家/地区的名称。 而不是使用console.log
来输出.svg
文件,而是使用fs.writeFileSync
将其写入country + '.svg'
. fs.writeFileSync
country + '.svg'
。
所以这:
console.log(window.d3.select("body").html());
会改变这个:
fs.writeFileSync(country + '.svg', window.d3.select("body").html());
注意:不要忘记 var fs = require('fs');
访问fs
模块。