Node.js:如何将参数值从终端传递给JS脚本

 天使犯罪de快乐 发布于 2022-12-29 07:35

给定一个jsdom基于svgcreator.node.js脚本的文件:

var jsdom = require('jsdom');
jsdom.env(
  "",        // 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存储库: git clone 'git@github.com:hugolpz/svgcreator.node.js.git'

需要jsdom,使用:( sudo npm install -g jsdom全局).


使用的解决方案(@Matt_Harrison):我们依赖process.env.myVar

svgcreator.node.js JS代码:

var jsdom = require('jsdom');
jsdom.env(
  "",        // 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回答并提出质疑!

1 个回答
  • 在终端中,您可以使用环境变量:

    $ COLOR=#FFFFFF node jsdom.node.js
    

    在你的JS中,做:

    var color = process.env.COLOR;
    

    或者您可以为命令添加额外的参数:

    $ node jsdom.node.js '#FFFFFF'
    

    在你的JS:

    var color = process.argv[2];
    

    如果你想使用图书馆; 我建议您查看Minimist库或Commander以获得更全面的解决方案.

    2022-12-29 08:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有