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.jsoutput.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模块。