编者按:很多人都在寻找一个能够统一编程语言江湖的“老大哥”,战火也重来没有停止过。Jonny Asmar在hackernoon上发表了一篇文章指出,因为Node的存在,JavaScript具备了多功能性,已经有了坐稳“头把交椅”的势头。
作者写在前面的话:这篇文章已经引起了大量的反对,因为很多人并不认为JavaScript是编程语言中的胜利者。
尽管我承认,我的标题可能会引起争议,可能会更加让人有点击欲望。但我还是想强调,这篇文章并不是说JS是“最好”的语言。
我只是在文章中简单地描述了它所覆盖的领域,以及它能够让简单的前端开发人员做更多事情的方法。
在编程的世界里,有一场旷日持久的战争。自从计算机问世以来,科学家们一直在寻找一种完美的编程语言。一个接一个的新语言被创造出来,以适应某种目的。随着新语言的出现,也会出现新的技术时代,新的技术社区,和大量的开源贡献。当然还会有不可避免的新的限制。自从在Java应用程序和Flash(我曾经是Flash开发者)在互联网上长期占据主导地位以来,我们已经看到有各种各样的语言的涌现,各种各样的语言毫无理由的消失,因为它们已经毫无用武之地。
世界正在朝着不同的方向前进……
那些曾经耀眼的新语言现在已经过时了,开发者越来越少,而新的语言也开始制造噪音。
到现在,JavaScript已经有几十年的历史了。所以,你可能会想,“它将会到何处去?”这篇文章其实不是关于“JavaScript”语言的。也不会去讨论在它之前许多语言的崛起和衰落。同时,也不是关于JavaScript是如何“新鲜有光泽”的。
这篇文章是关于Node的。
真的很有必要,在一开始就区分这一点。因为Node不只是一种语言。而是一个生态系统。
这就是这篇文章的主旨。
不过也不完全是这样。我不打算详细讲述这个生态系统是世界上有史以来最具创新性的开源合作的推动者。这是另一个的话题。
我要说明的是,Node是如何通过遍历现代编程的五个关键领域,赢得了一场关于完美语言的古老战争的。
React、Angular和Vue都是当今最重要的前端框架。总的来说,Facebook,Google和FOSS社区共同开发出了一种令人兴奋的开发交互式用户界面的高效工具。
因此,现在你在网络上做的所有事情都是通过一个高度互动、美观、易用的界面来实现的。这些框架之所以能够完全实现,完全是因为Node生态系统,你已经知道了。
你看,毫无疑问,JavaScript在前端Web开发中占据了主导地位,但React,Angular和Vue已经将它提升到了一个新的高度。
这是用户界面的时代。
前端开发人员不再回避构建复杂的单页面Web应用程序和完整的软件套件的时代。我曾经是一名Web开发人员,现在我是一名软件开发人员。
就这样……JavaScript赢得了Web开发。
这一部分不仅只是阐述Node在Mobile领域的成功,还将提出另一个关键问题:
Node是跨平台的。
这不仅仅是“哦,酷,它也能在我的手机上工作!”,也不仅仅是“哇,我的手机、平板电脑、笔记本电脑和电视都可以使用YouTube!”。
Node跨平台的方式是最重要的。对于开发者来说,这是一个真正的跨平台生态系统。那些真正建立起“噢,酷”和“哇”的东西的人都喜欢这个。
React Native只是Node生态系统中开发的框架的一个例子,它以前所未有的方式弥合了前端开发和移动应用开发之间的鸿沟,这是其他任何框架都没有的。
移动开发的最大压力一直是Web的拉动。但是,通过React Native和Node生态系统,开发者可以构建一个兼容Web、iOS和Android的应用。没有其他语言能提供这种多功能性。
就这样……JavaScript赢得了移动开发。
当然,并不是所有的事情都发生在Web上。桌面应用程序对于我们当前这个依赖技术的世界的运营中也至关重要。
但是,既然Web现在能够提供功能齐全的应用程序,为什么我们还要开发桌面软件,并对其进行不同的处理呢?
实际上,JavaScript赶上桌面端的性能需求,只是个时间问题。
所以,Electron诞生了。
当然,在桌面编程的时候,还有更高效的语言可以使用,但对于我们今天使用的大多数应用程序来说,JavaScript已经足够了。
多亏了Cheng Zhao和Github,创建了一个能够改变桌面计算面貌的框架。
Electron不仅让桌面应用程序的开发变得更加简单,而且也能兼容Mac, Windows和Linux,它构建的应用可在这三个操作系统上面运行。
虽然Windows仍然是当今最普及的操作系统,Mac的稳定增长已经持续了15年,越来越多的开发者每天都在使用Linux。此外,像树莓派这样的小玩具也会让Linux出现在许多以前只有windows或Mac的家庭中。我认为你可以理解为什么跨操作系统的开发会具有巨大的优势……而这仅仅是个开始。
截止到现在,Node生态系统已经能够完全覆盖Web开发、移动开发和桌面开发。提供了一个能够在这些所有的平台建立相同用户界面的技能组合。
就这样……JavaScript赢得了桌面开发。
我不想在这里介绍NPM(节点包管理器)上提供的无数软件包,这些包可以方便后端开发,因此,我只会提到Express sjs,有一个简单但深刻的理由:
Node是为后端而构建的。
而且,Node生态系统中的JavaScript已经成为了一种多用途的工具,已经被用于开发自己的服务器应用程序。在Node创建之前,JavaScript基本上只支持浏览器。它不需要执行复杂的服务器端操作,如数据库读取、图像转换或压缩。但现在它可以……
而且,正如以上几个例子一样,这种对代码共享和重用显着的简化也产生了一些明显的副作用。
其中一个副作用就是服务器端渲染。
你get到了吗?
渲染
这两件事有什么共同点?
传统意义上来说,没什么。但“前端”(JavaScript)或“后端”(PHP、Java、Python、Ruby等)的开发通常是由两个完全独立的团队来维护。
两个团队的人非常不同。
但现在不再是了!
感谢Node,我们现在能够在用户的浏览器需要渲染一件东西之前,在服务器端组装复杂的用户界面。这就是为什么现在Web如此时髦的原因。因为Node已经消除了后端和前端之间的界限。
就这样……JavaScript赢得了后端开发。
我把这个放到了最后,因为它并不是真正的“Node”,而是JavaScript的东西,我想稍微宽泛一些:
JavaScript的成功不是因为它优于其他语言。它的成功是一个直接的结果,它对几乎每个社区都能够适应。
JavaScript开发者并非纯粹主义者。
我们喜欢我们的语言(不是),版本分散、依赖于转译、跨平台、前沿、不断发展,以及以前没有语言的地方。
就像游戏开发!
当Unity 3D首次推出基于JavaScript的“UnityScript”作为游戏开发工具的时候,我当时就意识到,JavaScript将会做一些非常酷的事情。这是该公司首次进军非Web开发领域。
这是一个明确的迹象,表明JavaScript可以做的不仅仅是打开“飞出”菜单,在页面上调整字体大小。它可以做更多的事情,让你给这篇文章或者一张图片点赞。它可以处理沉浸式的跨平台游戏体验。那些曾经被限制在Chrome、Firefox和Internet Exploder的开发者,突然之间也成了一名游戏开发者。
虽然Unity最近宣布他们将不在支持UnityScript,但我还是要说:
就这样……JavaScript赢得了游戏开发。
好吧,也许不是。
我不知道这个征服会在什么时候停止,但Node正在疯狂爆发。它正在颠覆一个又一个的发展难题,为一个软件开发的世界铺平了道路,在这个世界里,一种语言可以统治所有。我确实觉得我需要重申一下——以防被忽视:
在任何一个领域,JavaScript都不是最佳语言。
JavaScript的优势在于它的多功能性。它来自开放式的社区,它采用了这种无分类、多态的脚本语言,并将其转变为当今最强大的开发生态系统。
如果你有不同的看法,欢迎在留言区互动。