node.js是像Perl和Python这样的传统脚本语言的可行替代品吗?

最近我已经不再爱用Perl作为一种跨平台的通用脚本语言,无论是Python还是Ruby,都没有真正吸引过我。

但是在浏览器中,我越来越习惯使用JavaScript,在V8等当代引擎中performance得相当不错,而node.js现在已经真正起飞了好几年了。

但是node.js主要用于服务器端networking编程。 正如它在主页上所声明的那样:

基于V8的事件驱动的I / O服务器端JavaScript环境。

我想知道node.js目前是否适合作为* nix和Windows上的一般脚本语言来替代Perl,Python和Ruby。

我没有多less关于它被用于这种方式的讨论,但它似乎有一个广泛的社区,我没有注意到任何说它不适合这种使用。 这种方式广泛使用吗? 还是缺乏这种types的关键function或模块?

就Node.js而言,我看不到它成为使用javascript作为通用脚本语言的主stream方式。 主要原因是Node.js中99%的库和函数的asynchronous性质。 由于asynchronous性,你必须彻底改变你的想法。 没有可用的同步方法是绊脚石。 它使事情less了脚本,因为你的代码不再是线性的。

所以采用不会发生的原因很简单,大部分时间你都在想:我可以在Ruby / Python /中更快更简单地写这个(只是尝试下载5个不同的文件,压缩它们并复制它们到另一个文件夹使用Node.js)

随着人们越来越习惯于以asynchronous方式进行思考和编程,采用node.js作为通用脚本工具可能会发生变化。

如果节点中的每个asynchronous函数都有一个同步版本,那么采用会有所不同,并且人们最终会select不可扩展的node.js服务器,因为他们select使用同步方法。 可以说节点不会变得stream行,因为演出数字不会让它脱颖而出。

简而言之:

node.js的采用是由于它的asynchronous性质而发生的。 node.js作为客户端通用脚本工具的采用并没有发生,因为它缺乏同步function。

请记住,这是基于我自己的经验和意见,而不是我在互联网上发现的文章或数字,所以试试看你自己的意见。