拒绝Python、C#和Go 我只用Node.js
消息来源:baojiabao.com 作者: 发布时间:2024-05-16
Node.js 实在是太强大了,远远不止运行网站那么简单。
我要写很多脚本。很多很多脚本。许多时候只是因为许多任务太复杂,或者量太大,以致没法手工完成。所以任何需要花时间的任务我都会写脚本。脚本不仅能减少错误,还能提高效率。我常说的一句话就是:
如果一件事情要做两次,那就写个脚本吧。
一些常见的任务有:
从巨大的数组中找出匹配的字元串,或者某个值。
删掉所有满足某些条件的一些值。
比较 x 和 y 然后输出 z。
我知道大多数程序员都认为 Python,甚至 C# 和 Go 更适合这些任务,但我一直都选择 Node.js 的理由有三个。
不会阻塞 I/O
默认情况下,Node.js 可以读取文件、解析内容放入数据库,再将新内容写入文件,这一切几乎都不需要思考。虽然 Python 和其他类似的语言可以通过库函数实现异步的能力,但默认情况下 Python 不是异步的,必须等一个函数执行完成后才能执行下一个函数。
Node.js 就没有这个问题,因为它的设计目标就是处理 Web 上连续不断的请求,而且它的设计是一切皆在后台处理(如文件访问、邮件等等)。
这个特点非常适合我的任务——我经常需要从我的研究对象中提取信息,然后保存到数据库中供以后使用。这样做还可以持久保存数据,同时释放内存,因为内存中不需要保留整个数组也可以调用数据库中的信息,操作、修改数据,所有这一切都在后台执行,所以可以在数据库中存储更多的信息。
I/O 请求也可以放在单独的线程中执行,与 Node.js 的主线程独立。也就是说,读取特别大或者读取困难的文件不会影响到主程序的性能(除了不能立即获取文件内容)。
自给自足
在编写只需使用几次的临时脚本时,代码优化并不重要。重要的是把代码写出来并运行。而负责运行 Node.js 的 V8 引擎(C++)正好能派上用场。
如果你只能将数组放到内存中操作,那么当数组非常非常大时,你会担心机器的状态和使用的内存量。幸运的是,V8 能通过自动垃圾回收来处理这一切。
也就是说,一块信息不再使用之后(比如从数组中删除掉的信息),其内存会自动被清除,然后在下次垃圾回收时被释放。尽管垃圾回收的检查和回收过程很复杂,但至少我可以专注于编写我的代码,而不用担心内存管理等,可以放心地把这一切交给 V8 来处理。
互动式结果怎么办?
一方面 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
译者:弯月,责编:屠敏
相关文章
- 中兴受美国制裁事件 被罚了20亿美元过程事件始末 中兴被制裁后公司现状
2023-11-02 22:12:46
- B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因
2023-03-06 19:05:55
- 苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓
2023-02-19 15:09:54
- 华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?
2023-02-17 23:21:27
- google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元
2023-02-17 18:58:09
- 科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯
2023-02-17 18:46:15
- 华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比
2023-02-17 18:42:49
- 小米MAX4手机上市日期首发价格 骁龙720打造大屏标准
2023-02-17 18:37:22
- 武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱
2023-02-16 15:53:18
- 谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠
2023-02-16 13:34:45
- 巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注
2023-02-13 16:49:06
- 人手不足 韵达快递客服回应大量包裹派送异常没有收到
2023-02-07 15:25:20
- 资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东
2023-02-02 09:24:38
- 三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办
2023-01-24 10:10:02
- 华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone14
2023-01-06 20:27:09
- 芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?
2022-12-02 17:25:17
- 华为暂缓招聘停止社招了吗?官方回应来了
2022-11-19 11:53:50
- 热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全
2022-11-16 16:59:09
- 东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?
2022-10-22 15:21:55
- 苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次
2022-10-03 22:13:45