JavaScript 已经赢了
JavaScript 已经赢了
原文:https://medium.com/hackernoon/javascript-has-already-won-235b29ed126b
这篇文章收到了对我声称自己是编程语言之战的“胜利者”的强烈抗议。虽然我承认,我的标题可能是为了引发争议,可能是“点击诱饵”,但我仍然想强调的是这篇文章并不是关于 JS 如何是“最好的”语言。
这仅仅是它所覆盖的领域,以及它允许曾经简单的前端开发做更多事情的方式。这是我在职业生涯中真正爱上的一种多功能性,我觉得有义务鼓励这种多功能性。
所以…

在编程的世界里,很久以前发生了一场战争。自从计算机出现以来,科学家们一直在寻找完美的编程语言。一种接一种的新语言被创造出来以适应某种目的。随着这种新语言的出现,一个新的技术时代,一个强大的社区,一百万个图书馆和开源贡献,以及不可避免的新限制。从汇编编程到 Java 小程序和令人厌恶的 Flash(我曾经是一名 Flash 开发人员……)统治 web 如此之久的古代时代开始,我们已经看到语言的出现和消失,原因无非是它们的实用性已经耗尽。
世界朝着不同的方向发展…
这种曾经闪亮的新语言现在已经过时了,开发者越来越少,一个新手开始制造一些噪音。
现在,JavaScript 已经存在了几十年。所以,你可能会想,“他要带着这个去哪里?”好吧,这篇文章其实不是关于“JavaScript”也不是关于在它之前兴衰的许多语言。也不是关于 JavaScript 如何“新颖和闪亮”
这个帖子是关于 Node 的。
我们真的需要开始区分这一点。因为 Node 是别的东西。它不仅仅是一种语言。这是一个生态系统。
这就是这篇文章的内容。
嗯,不完全是。我不打算详述这个生态系统是这个世界上有史以来最具创新性的开源协作推动者的 150 万个原因。不,那是改天的话题。现在,我将展示 Node 如何通过跨越现代编程的五个关键领域,赢得了完美语言的古老战争:
网络
反应过来,棱角分明,Vue
React、Angular 和 Vue 无疑是当今最重要的前端框架。总的来说,脸书、谷歌和自由/开源软件社区已经为开发交互式用户界面开发出了令人惊叹的高效工具。
因此,今天你在网上做的几乎所有事情都是由一个高度互动、美观、易用的界面提供的。这些框架之所以成为可能,完全是因为节点生态系统,这一点你们已经知道了。
你看,毫无疑问,JavaScript 一直主导着前端 web 开发,但是 React、Angular 和 Vue 将它带到了另一个层次。
这是 UI 的时代。
前端开发人员不再回避构建复杂的单页 web 应用程序和成熟的软件套件的时代。我曾经是一名网络开发人员,现在是一名软件开发人员。
就这样……Node 赢了 web。
移动的
反应土著
这一部分不仅将阐述 Node 在移动领域的成功,还将提出另一个关键点:
节点是跨平台的。
而不仅仅是“哦,酷,它在我的手机上工作!”算是吧。甚至不是在“哇,我的手机、平板电脑、笔记本电脑和电视都可以使用 YouTube!”算是吧。
节点以最重要的方式跨平台。对开发者来说是真正的跨平台。人们实际上建立了“哦,酷”和“哇”的东西上面提到 frackin 爱这个。
React Native 只是在节点生态系统中开发的框架的一个例子,它以其他框架没有的方式弥合了前端开发和移动应用程序开发之间的差距。
移动开发的最大压力一直是网络的拉力。然而,使用 React Native 和 Node 生态系统,开发人员可以构建一个与 web、iOS 和 Android 兼容的应用程序。没有其他语言能提供这种多功能性。
又是那样……节点赢了移动。
桌面
电子
当然,并不是所有的事情都发生在网络上。在当今这个依赖技术的世界里,桌面应用程序对我们的工作方式也至关重要。
但是,当网络现在能够提供全功能的应用程序时,我们为什么要对桌面有所不同呢?
JavaScript 赶上桌面的性能需求只是时间问题。
就这样,电子诞生了。
当然,在为桌面编程时,仍然有更有效的语言可以使用,但是对于我们今天使用的大多数应用程序,JavaScript 已经足够了。
多亏了赵程和 Github,一个正在改变桌面计算面貌的框架诞生了。Electron 不仅将桌面应用程序开发添加到 web 开发人员已经增长的技能中,而且它是以完全跨操作系统兼容的方式做到这一点的。
虽然 Windows 仍然是当今最普及的操作系统,但 Mac 已经稳步上升了 15 年,每天都有越来越多的开发人员转向 Linux(就像我刚刚做的一样)。此外,像树莓派这样的小玩具正使 Linux 在不仅仅是少数以前只有 Windows 或 Mac 的家庭中流行起来。我想你可以明白为什么跨操作系统开发是如此巨大的优势……而这仅仅是个开始。
现在,我们已经将 web、移动和桌面完全纳入了节点生态系统。一套能够在所有这些地方构建相同 UI 的技能。
又像那个……节点赢了桌面。
后端
ExpressJS
我不想在这里详细介绍 NPM (Node Package Manager)上的无数有助于后端开发的包,所以我只打算提到 ExpressJS,这是为了说明一个简单而深刻的观点:
节点是为后端构建的。
节点生态系统中的 JavaScript 已经成为一个非常通用的工具,它已经被用来开发自己的服务器应用程序。现在,这可能看起来不是最令人印象深刻的壮举,但让我们考虑一下,直到 Node 的创建,JavaScript 基本上只适用于浏览器。它不需要执行复杂的服务器端操作,如数据库获取、图像转换或压缩。但是现在它可能 …
和上面的几个例子一样,这种代码共享和重用的显著简化也带来了一些显著的副作用。
一个这样的副作用是服务器端 渲染。
你听到了吗?
服务器端
翻译
这两件事有什么共同点?
传统上,什么都没有。这两项职责总是被归入他们的“前端”(JavaScript)或“后端”(PHP、Java、Python、Ruby 等)处理程序。通常由两个完全独立的团队维护。
很不一样的人,后端&前端开发者……
但不再!
多亏了 Node,我们现在能够在用户的浏览器需要渲染之前,在服务器端组装复杂的用户界面。这就是为什么现在的网络如此时髦。因为节点已经擦除了后端和前端之间的边界。
就这样……节点获得了后端。
游戏
Unity 3D
我把这个留到最后,因为它不是真正的“节点”,而是 JavaScript,我想用一个稍微宽泛的注释来结束:
JavaScript 的成功并不是它优于其他语言的结果。它的成功是它如何适应几乎每一个社区的直接结果。
JavaScript 开发者不是纯粹主义者。
我们喜欢我们的语言本来的样子;版本碎片化、依赖于翻译、跨平台、前沿、不断进化,并走向语言从未涉足的领域。
喜欢游戏开发!
当 Unity 3D 第一次推出基于 JavaScript 的“UnityScript”作为游戏开发的手段时,我看到 JavaScript 将会做一些非常酷的事情。这是它对非 web 开发的第一次重大尝试之一,也是未来发展的一个明显标志。
这清楚地表明,JavaScript 不仅仅可以打开弹出菜单和调整页面上的字体大小。它能做的不仅仅是让你喜欢这篇文章,喜欢那张图片。它可以处理沉浸式的跨平台游戏体验。那些曾经局限于 Chrome、Firefox 和 Internet Exploder 的开发者突然变成了游戏开发者。
虽然 Unity 最近宣布他们将放弃对 UnityScript 的支持,但我还是要说:
就这样……JavaScript 赢得了游戏。
好吧,也许不是。但这还不是第 12 轮,不是吗?
宋含维尼、维迪
我不知道什么时候征服会停止,但节点是横冲直撞。它推翻了一个又一个开发难题,并为一种语言统治所有开发难题的软件开发世界铺平了道路。不过,我确实觉得有必要在巨魔面前重申一下——以防被忽略:
JavaScript 并不是所有工作的最佳语言。
JavaScript 的优势来自于它的多功能性。它来自一个开放的社区,这个社区已经接受了这种无类的、多态的脚本语言,并把它变成了当今最强大的开发生态系统。
不同意?我很想在评论中听到它。
否则,请分享几个掌声,表示你对世界上最具创新性的语言的支持!
我叫 Jonny Asmar,我真诚地感谢您花时间阅读我的帖子!
15 年前,我开始在记事本上写代码,从未停止过。虽然我主要在 React/Redux & Node 工作,但我对技术的热情远远超出了 UI 开发——这是我一直在努力与您分享的热情。
你可以 在 JonnyAsmar.com了解我,在 GitHub 上查看 我的一些代码,或者在[email protected]联系我。