【发布时间】:2014-10-02 22:09:30
【问题描述】:
给定一个基于jsdom 的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 CODE * * * * * * * * * * * * * * * * * * * * * * * *
function (err, window) {
var svg = window.d3.select("body")
.append("svg")
.attr("width", 100)
.attr("height", 100);
svg.append("rect")
.attr("id", "rect1")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", "green");
// END svg design
//PRINTING OUT SELECTION
console.log(window.d3.select("body").html());
}
// END (D3JS) * * * * * * * * * * * * * * * * * * * * * * * *
);
假设我使用 NodeJS 终端命令运行它并生成一个output.svg 文件:
node svgcreator.node.js > output.svg # nodeJS + script command
如何将参数的值从终端传递给 NodeJS?
测试的依赖:
-
svgcreator.node.js github repository:
git clone 'git@github.com:hugolpz/svgcreator.node.js.git' - 需要 jsdom,使用:
sudo npm install -g jsdom(全局)。
使用的解决方案 (@Matt_Harrison): 我们依赖 process.env.myVar
svgcreator.node.jsJS代码:
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 CODE * * * * * * * * * * * * * * * * * * * * * * * *
function (err, window) {
var color = process.env.COLOR; // <<################# IMPORTANT !!
var svg = window.d3.select("body")
.append("svg")
.attr("width", 100)
.attr("height", 100);
svg.append("rect")
.attr("id", "rect1")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", color); // <<################# IMPORTANT !!
// END svg design
//PRINTING OUT SELECTION
console.log(window.d3.select("body").html());
}
// END (D3JS) * * * * * * * * * * * * * * * * * * * * * * * *
);
终端 NodeJS 命令:
COLOR=#66AAFF node svgcreator.node.js > out.svg # <<############# IMPORTANT !! setting the value.
+1 @Matt_Harrison 的回答和赞赏的问题!
【问题讨论】:
-
我不太确定您是否只是在寻找这个,但是..您可以使用 process.argv 将参数从终端传递到浏览器
-
我想将参数从终端传递到我的脚本
jsdom.node.js,它在nodejs JS引擎中运行。 -
对不起!我也是 node.js 的新手,但我很确定,您可以使用 process.argv 数组将参数从终端传递到 js 文件。例如。 node test.js 2 在终端和 js 文件中,您可以像 console.log(process.argv[2]) 一样获得它。希望有帮助
-
欢迎您的好意,我们在尝试中学习~