Node.js : how to pass JS variable's value from script to terminal?
给定一个运行d3js动态dataviz的js脚本
我目前使用以下方法将单个视图打印到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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) * * * * * * * * * * * * * * * * * * * * * * * * ); |
终端节点命令:
1 | node svgcreator.node.js > output.svg |
它的工作方式是将来自
因为这个d3js dataviz可以在全球范围内运行,所以应该可以将每个视图的一条
1 | node svgcreator.node.js > $(JsVar.country).svg # nb: this var syntax if fictional |
所以每当一个console.log()消息出现时,中的消息就会以正确的名称打印到SVG文件中。
另外,如何将JS变量的值从脚本传递到终端?
另请参见:node.js:如何将参数值从终端传递到js脚本
最简单的方法是直接将节点写入文件,而不是尝试使用
这样做的代码非常简单。假设您的脚本中有一个名为
所以,这个:
1 | console.log(window.d3.select("body").html()); |
将改为:
1 | fs.writeFileSync(country + '.svg', window.d3.select("body").html()); |
注意:不要忘记使用