1

我正在用javascript构建一个“终端事物”。这个想法是每个命令都是一个单独的 .js 文件,采用 AMD 格式,并且所有内容都使用 requirejs 加载。

我希望命令被称为:

command -s "string u-l: extra" -g http://domain.com/random.txt -r -a --test fixed

这将转化为类似的东西:

command({'-s': 'string u-l: extra', '-g': 'http://domain.com/random.txt', '-r': true, '-a': true, '--test': 'fixed'});

但这就是我卡住的地方,我尝试在脑海中运行不同的场景,但我找不到任何好的答案,但我可以提出冲突:

  • split() - 如果有一些额外的空格会破坏一切
  • 正则表达式 - 正则表达式每次都依赖于获取相似的字符串,如果我想要“wget http://code.jquery.com/jquery-1.8.3.min.js ”之类的东西怎么办?
  • 在命令本身中定义规则 - 仍然需要弄清楚解析
  • 管道 - 如果我想要管道,我必须弄清楚如何不破坏错误的管道,即:“command -s 'random | pipe' | command2 asd”

任何想法/建议将不胜感激,我坚持这一点。

4

1 回答 1

-1

如果你分开,事情会更容易:

  • 解析(使用特殊用途的库,如https://github.com/jfd/optparse-js?)
  • 将解析的输入转换为所需模块的列表(如果我理解正确,您必须定义参数和命令模块之间的映射)
  • 需要上述模块,然后将相关参数传递给每个模块?
于 2013-01-07T10:31:09.680 回答