最近,我已经不再喜欢Perl作为跨平台的通用脚本语言,而且Python和Ruby也没有真正吸引过我。
但是我在浏览器中越来越习惯使用JavaScript,它在V8等现代引擎中的表现相当不错,而node.js已经真正起飞了几年。
但node.js主要用于服务器端网络编程。正如它在其主页上宣布的那样:
基于V8的事件驱动的I / O服务器端JavaScript环境。
我想知道node.js目前是否适合作为* nix和Windows上的通用脚本语言,作为Perl,Python和Ruby的替代。
我没有太多关于以这种方式使用它的说法,但它确实似乎有一个广泛的社区,我没有注意到任何说它不适合这种用途。这种方式被广泛使用吗?或者它缺少这种类型的关键功能或模块?
答案 0 :(得分:26)
就Node.js而言,我无法看到它成为使用javascript作为通用脚本语言的主流方式。主要原因是Node.js中99%的库和函数的异步性质。由于异步性质,你必须完全改变你的想法。没有可用的同步方法是绊脚石。它会减少脚本,因为你的代码不再是线性的。
因此,大多数时候你都在考虑采用这种简单的原因:我可以在Ruby / Python /中更快/更简单地写这个...(只需尝试下载5个不同的文件,压缩它们并使用Node.js将它们复制到另一个文件夹
随着人们越来越习惯于以异步方式思考和编程,将node.js作为通用脚本工具的采用可能会发生变化。
如果节点中的每个异步函数都有一个同步版本,那么采用会有所不同,人们最终会得到不可扩展的node.js服务器,因为他们选择在某些地方使用同步方法。可以说,节点不会变得流行,因为性能数字不会让它脱颖而出。
简而言之:
node.js的采用正在发生,因为它具有异步性质。 由于缺少同步功能,因此没有采用node.js作为客户端通用脚本工具。
请记住,这是基于我自己的经验和意见,而不是我在互联网上找到的文章或数字,所以请亲自尝试并制定自己的意见。