安基网 首页 编程 软件学院 查看内容

拒绝 Python、C 和 Go,我只用 Node.js!

2018-10-23 01:35| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: Node.js 实在是太强大了,远远不止运行网站那么简单。我要写很多脚本。很多很多脚本。许多时候只是因为许多任务太复杂,或者量太大,以致没法手工完成。所以任何需要花时间的任务我都会写脚本。脚本不仅能减少错误, ...

Node.js 实在是太强大了,远远不止运行网站那么简单。

我要写很多脚本。很多很多脚本。许多时候只是因为许多任务太复杂,或者量太大,以致没法手工完成。所以任何需要花时间的任务我都会写脚本。脚本不仅能减少错误,还能提高效率。我常说的一句话就是:

如果一件事情要做两次,那就写个脚本吧。

一些常见的任务有:

  • 从巨大的数组中找出匹配的字符串,或者某个值。
  • 删掉所有满足某些条件的一些值。
  • 比较 x 和 y 然后输出 z。

我知道大多数程序员都认为 Python,甚至 C# 和 Go 更适合这些任务,但我一直都选择 Node.js 的理由有三个。

1.不会阻塞 I/O

默认情况下,Node.js 可以读取文件、解析内容放入数据库,再将新内容写入文件,这一切几乎都不需要思考。虽然 Python 和其他类似的语言可以通过库函数实现异步的能力,但默认情况下 Python 不是异步的,必须等一个函数执行完成后才能执行下一个函数。

Node.js 就没有这个问题,因为它的设计目标就是处理 Web 上连续不断的请求,而且它的设计是一切皆在后台处理(如文件访问、邮件等等)。

这个特点非常适合我的任务——我经常需要从我的研究对象中提取信息,然后保存到数据库中供以后使用。这样做还可以持久保存数据,同时释放内存,因为内存中不需要保留整个数组也可以调用数据库中的信息,操作、修改数据,所有这一切都在后台执行,所以可以在数据库中存储更多的信息。

I/O 请求也可以放在单独的线程中执行,与 Node.js 的主线程独立。也就是说,读取特别大或者读取困难的文件不会影响到主程序的性能(除了不能立即获取文件内容)。

2.自给自足

在编写只需使用几次的临时脚本时,代码优化并不重要。重要的是把代码写出来并运行。而负责运行 Node.js 的 V8 引擎(C++)正好能派上用场。

如果你只能将数组放到内存中操作,那么当数组非常非常大时,你会担心机器的状态和使用的内存量。幸运的是,V8 能通过自动垃圾回收来处理这一切。

也就是说,一块信息不再使用之后(比如从数组中删除掉的信息),其内存会自动被清除,然后在下次垃圾回收时被释放。尽管垃圾回收的检查和回收过程很复杂,但至少我可以专注于编写我的代码,而不用担心内存管理等,可以放心地把这一切交给 V8 来处理。

3.交互式结果怎么办?

一方面 Node.js 的目标之一就是运行网站。而另一方面我需要显示脚本结果或者将其发给别人,比如让别人也能查看运行结果甚至能够修改脚本的运行参数,所以我可以利用 Node.js 的真正的目标来实现这一需求。

Node.js 可以通过模板语言很容易地将结果直接放到服务器上。我使用的模板引擎是 EJS,因为它跟脚本一样非常直观。这是典型的“只做一件事并且做好一件事”的例子。

我知道其他脚本语言也能运行网站,而且也非常容易(比如 Python),但能在同一个脚本中编写逻辑代码并提供结果,而无需离开 Node.js 的生态系统,还是很有诱惑的。

以上就是我干什么都是用 Node.js 的理由。不论是构建网站,访问数据库还是编写脚本来自动处理文件,我都会默认选择 Node.js。在此也推荐你也试试用 Node.js 写个脚本。

原文:https://medium.com/@kieranmaher13/why-i-use-nodejs-for-basically-everything-i-do-e0a627787ecc

作者:Kieran Maher

译者:弯月,责编:屠敏


Tag标签:

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6615092797420601863/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部