为什么我这么喜欢 Node.js —— 因为 Promises, Express 和 CLI 已翻译 100%

oschina 投递于 2016/02/09 22:26 (共 5 段, 翻译完成于 02-21)
阅读 8072
收藏 57
9
加载中

几年前我发布了一篇[关于Node.js的博文](http://adamfowler.org/2013/05/08/why-i-like-node-js/)。在最近做了几次对博文更加疯狂的填充之后,我想我写这篇文章更多的原因是因为我热爱[Node.js](http://www.nodejs.org/)!

Promises, Promises

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

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

这让我可以通过很少的几行代码,去大规模的测试客户的基于[Node.js](http://www.nodejs.org/) Express web框架的应用,在[MarkLogic Server](http://developer.marklogic.com/)里轮流测试高吞吐量和查询负载。

i5ting
翻译于 2016/02/20 11:38
2

Express Web Apps

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

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

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


i5ting
翻译于 2016/02/20 11:39
2

命令行应用


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

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

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

i5ting
翻译于 2016/02/20 11:40
0

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

  • [minimist](https://www.npmjs.com/package/minimist)用于解析命令行参数。我无法表达我对它足够强大能力的热爱!

  • [q](https://www.npmjs.com/package/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](https://www.npmjs.com/package/winston)用于在命令行(info level)或文件(debug level)里记录日志输出和错误。我也在我的 [mljs MarkLogic REST API wrapper](https://github.com/adamfowleruk/mljs) 里也用它了.

  • [istextorbinary](https://www.npmjs.com/package/istextorbinary) 让我可以测试文件,判断它们是不是二进制。在使用MarkLogic Server不掌握每一个mime类型的时候是非常有用的。我用它来决断,物流我需要一个上传二进制文件或者其他,或指定哪种mime类型。

  • [terminal-kit](https://www.npmjs.com/package/terminal-kit)用于提供命令行输出里的代码着色和样式文本。在我用绿色表示成功,黄色表示警告,红色代表主要错误的时候是非常有用的。

i5ting
翻译于 2016/02/20 11:40
0

总结

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

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

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

i5ting
翻译于 2016/02/19 00:00
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(39)

yfwz100
yfwz100

引用来自“yfwz100”的评论

这个标题翻译不明不白。貌似 The sequel 是续作/结果的意思吧,有前文?

引用来自“t2y3”的评论

对,这是续篇。正文第一行说了:“几年前我发布了一篇[关于Node.js的博文](http://adamfowler.org/2013/05/08/why-i-like-node-js/)。”

引用来自“yfwz100”的评论

三年前发的文章当新闻?

引用来自“Rwing”的评论

我想问一下你的语文是谁教的?
什么意思?
开源中国驻京办主任
开源中国驻京办主任

引用来自“YO-JLIFE”的评论

说实话,这翻译,还不如看英文,纯个人观点,觉得不对请喷我~
说的蛮好的呀,为什么要喷你。
i5ting
i5ting

引用来自“梅开源”的评论

装个node,然后npm install个啥,跑不起来。模块安一个目录,module设另外一个目录,这默认就能这样好毁灭用户积极性。

引用来自“i5ting”的评论

npm是目前最大的包管理器,还是非常不错的,有问题可以去cnode提问,会有人解答的

引用来自“梅开源”的评论

我知道不错的。我意思是安装包安装以后默认npm install的东西不能用,还要改path,modulepath之类,这样的安装有些杀死萌新用户。
是win么?
梅开源
梅开源

引用来自“梅开源”的评论

装个node,然后npm install个啥,跑不起来。模块安一个目录,module设另外一个目录,这默认就能这样好毁灭用户积极性。

引用来自“i5ting”的评论

npm是目前最大的包管理器,还是非常不错的,有问题可以去cnode提问,会有人解答的
我知道不错的。我意思是安装包安装以后默认npm install的东西不能用,还要改path,modulepath之类,这样的安装有些杀死萌新用户。
gdfhs5gdfg
gdfhs5gdfg
花了5秒钟时间看完了,然后发现我一点也不在乎写这文章的人喜欢什么
啦啦啦拉拉
啦啦啦拉拉
因为没有自动补全,代码提示我讨厌她
恶人
恶人
我经常愉快的因为他们而惊喜 ....有点晕
夏鱼的鱼
夏鱼的鱼

引用来自“NeilyoS”的评论

能给点儿干货吗? 这文章就好比一个暴发户 , 在那儿大声感叹: "有钱真好"

引用来自“i5ting”的评论

确实是科普的,其他的请到cnode上提问,最近会搞一个koa开源的干货,希望大家可以一起学习
其实大家更希望是看到, 我遇到了什么问题, 然后我怎么解决的. 这类科普文, 也很水的说, 光说好,好在哪里大家都看不见也感受不到.毕竟很多不是这个专业的, 作者这里就不负责任了. 只是针对作者, 翻译人我还是很佩服的
gowk
gowk

引用来自“NeilyoS”的评论

能给点儿干货吗? 这文章就好比一个暴发户 , 在那儿大声感叹: "有钱真好"
哈哈,形象
TAT的啦
TAT的啦
http://www.example.org/ex-link-test
返回顶部
顶部