【译文】Why I Love Node.js: Promises, Express, and the CLI
发布于 9 年前 作者 i5ting 5128 次浏览 最后一次编辑是 8 年前 来自 分享

Why I Love Node.js: Promises, Express, and the CLI

原文地址:https://dzone.com/articles/why-i-love-nodejs-part-2-adams-blog?edition=144259&utm_source=Spotlight&utm_medium=email&utm_content=queue&utm_campaign=web dev 2016-02-18

几年前我发布了一篇关于Node.js的博文。在最近做了几次对博文更加疯狂的填充之后,我想我写这篇文章更多的原因是因为我热爱Node.js!

Promises, Promises

在我之前的文章里我曾提到过“bracket hell”。当然,在介入一段时间后,我开始使用使用Promises做很多事儿,尤其是npm里的[Q promises 库]。

Promises允许你进行简单的链式操作。你可以并行执行代码,直到它们执行完成,或顺序执行,或者二者混用!我曾在上周使用过二者混用,使用Q.all来启动10个“线程”,每个线程使用promisesArray.reduce顺序跑1500个任务。

这让我可以通过很少的几行代码,去大规模的测试客户的基于Node.js Express web框架的应用,在MarkLogic Server里轮流测试高吞吐量和查询负载。

译者注:Promises指的是promise/a+规范

Express Web Apps

创建web server听起来挺吓人的,但使用Express却非常非常的简单。你仅仅需要中间截取你需要的小量的路由(URL patterns),这样就完成了!

你甚至可以使用URL pattern自身的推断参数。例如/get/fred/1 可以用于获取在fred集合里的第一个文档。相当酷吧,让人不禁想到Ruby on Rails。

如果要是想开发web应用的话,无疑我会优先推荐学习Express。

命令行应用

你知道可以使用Node创建一个可以在各个平台上全局安装的NPM包应用么?这就是NPM的酷的形式。

我把它用到我的mlnodetools包里,把我在项目里的2个工具打包到里面。mljsadmin允许你捕获MarkLogic应用和所有服务器设置,并通过几个命令把它传送到另一个机器。mljsserve使用上文提到的Express来创建一个小web server,使用它代理MarkLogic REST API URLs直接代理到MarkLogic服务器。

在MarkLogic销售引擎中做的事儿是阐述web应用非常棒的(顺便说一下,我们正在招聘,如果你们感兴趣的话请联系我)。

我在mljsadmin里使用的几个NPM包:-

  • minimist用于解析命令行参数。我无法表达我对它足够强大能力的热爱!
  • q再次用于promises,把复杂函数链接一起(所以当’install’顺序执行9各子命令, runs about 9 sub-commands in series, which can also each be ran on their own from the command line)
  • winston用于在命令行(info level)或文件(debug level)里记录日志输出和错误。我也在我的 mljs MarkLogic REST API wrapper 里也用它了.
  • istextorbinary 让我可以测试文件,判断它们是不是二进制。在使用MarkLogic Server不掌握每一个mime类型的时候是非常有用的。我用它来决断,物流我需要一个上传二进制文件或者其他,或指定哪种mime类型。
  • terminal-kit用于提供命令行输出里的代码着色和样式文本。在我用绿色表示成功,黄色表示警告,红色代表主要错误的时候是非常有用的。

总结

我经常愉快的因为他们而惊喜,无论小工具还是我需要阐述的那些,无论多复杂,Node.js极大的简化我的生活!

Node.js的事件驱动特性和通过扩展支持广泛的NPM,让我可以快速的查找和使用我需要的最多神秘功能。我经常可以选择神密的库。

在IT今天,无论干什么工作,我都推荐你们学习Node.js。Node.js会让你的项目腾飞!

全文完

欢迎关注我的公众号【node全栈】

node全栈.png

如果想参与评论,请点击原文链接,进入国内最专业的cnode论坛

2 回复

nodejs,让我更爱js,js6,让我相信js的力量!

回到顶部