为什么主要节点参数解析器使用链接语法?



commander和ygs都使用了类似jQuery的链接语法。

链接语法是库创建时代的历史结果,还是有功能动机?

尝试决定是否使用我喜欢的语法编写包装器。

:

program
.option('-d, --debug', 'output extra debugging')
.option('-s, --small', 'small pizza size')
.option('-p, --pizza-type <type>', 'flavour of pizza');
program.parse(process.argv);

yargs:

yargs(hideBin(process.argv))
.command('serve [port]', 'start the server', (yargs) => {
yargs
.positional('port', {
describe: 'port to bind on',
default: 5000
})
}, (argv) => {
if (argv.verbose) console.info(`start server on :${argv.port}`)
serve(argv.port)
})
.option('verbose', {
alias: 'v',
type: 'boolean',
description: 'Run with verbose logging'
})
.argv
例如,他们可以接受一个大的配置对象,这看起来更习惯:
parse({
options: {
debug: {
description: 'output extra debugging',
alias: 'd'
},
small: {
description: 'small pizza size',
alias: 's'
},
['pizza-type']: {
description: 'flavour of pizza',
alias: 'p'
},
}
})

这种方法名为fluent interface,因为它简化了对同一对象的一系列方法的调用而闻名。Martin Fowler在jQuery出现之前就提到了这种方法。参见Fluent接口

例如,看看c#中的LINQ,它是流畅接口原则的强大实现。

最新更新