在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了 - 开源中国社区
Float_left Icon_close
在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了
达尔文 2018年01月13日

在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了

达尔文 达尔文 发布于2018年01月13日 收藏 29

阿里云高性能云服务器,2折起! >>> >>>  

编者按:很多人都在寻找一个能够统一编程语言江湖的“老大哥”,战火也重来没有停止过。Jonny Asmarhackernoon上发表了一篇文章指出,因为Node的存在,JavaScript具备了多功能性,已经有了坐稳“头把交椅”的势头。

作者写在前面的话:这篇文章已经引起了大量的反对,因为很多人并不认为JavaScript是编程语言中的胜利者。

尽管我承认,我的标题可能会引起争议,可能会更加让人有点击欲望。但我还是想强调,这篇文章并不是说JS是“最好”的语言。

我只是在文章中简单地描述了它所覆盖的领域,以及它能够让简单的前端开发人员做更多事情的方法。

在编程的世界里,有一场旷日持久的战争。自从计算机问世以来,科学家们一直在寻找一种完美的编程语言。一个接一个的新语言被创造出来,以适应某种目的。随着新语言的出现,也会出现新的技术时代,新的技术社区,和大量的开源贡献。当然还会有不可避免的新的限制。自从在Java应用程序和Flash(我曾经是Flash开发者)在互联网上长期占据主导地位以来,我们已经看到有各种各样的语言的涌现,各种各样的语言毫无理由的消失,因为它们已经毫无用武之地。

世界正在朝着不同的方向前进……

那些曾经耀眼的新语言现在已经过时了,开发者越来越少,而新的语言也开始制造噪音。

到现在,JavaScript已经有几十年的历史了。所以,你可能会想,“它将会到何处去?”这篇文章其实不是关于“JavaScript”语言的。也不会去讨论在它之前许多语言的崛起和衰落。同时,也不是关于JavaScript是如何“新鲜有光泽”的。

这篇文章是关于Node的。

真的很有必要,在一开始就区分这一点。因为Node不只是一种语言。而是一个生态系统。

这就是这篇文章的主旨。

不过也不完全是这样。我不打算详细讲述这个生态系统是世界上有史以来最具创新性的开源合作的推动者。这是另一个的话题。

我要说明的是,Node是如何通过遍历现代编程的五个关键领域,赢得了一场关于完美语言的古老战争的。

Web开发

React、Angular、Vue

React、Angular和Vue都是当今最重要的前端框架。总的来说,Facebook,Google和FOSS社区共同开发出了一种令人兴奋的开发交互式用户界面的高效工具。

因此,现在你在网络上做的所有事情都是通过一个高度互动、美观、易用的界面来实现的。这些框架之所以能够完全实现,完全是因为Node生态系统,你已经知道了。

你看,毫无疑问,JavaScript在前端Web开发中占据了主导地位,但React,Angular和Vue已经将它提升到了一个新的高度。

这是用户界面的时代。

前端开发人员不再回避构建复杂的单页面Web应用程序和完整的软件套件的时代。我曾经是一名Web开发人员,现在我是一名软件开发人员。

就这样……JavaScript赢得了Web开发。

移动开发(Mobile)

React Native

这一部分不仅只是阐述Node在Mobile领域的成功,还将提出另一个关键问题:

Node是跨平台的。

这不仅仅是“哦,酷,它也能在我的手机上工作!”,也不仅仅是“哇,我的手机、平板电脑、笔记本电脑和电视都可以使用YouTube!”。

Node跨平台的方式是最重要的。对于开发者来说,这是一个真正的跨平台生态系统。那些真正建立起“噢,酷”和“哇”的东西的人都喜欢这个。

React Native只是Node生态系统中开发的框架的一个例子,它以前所未有的方式弥合了前端开发和移动应用开发之间的鸿沟,这是其他任何框架都没有的。

移动开发的最大压力一直是Web的拉动。但是,通过React Native和Node生态系统,开发者可以构建一个兼容Web、iOS和Android的应用。没有其他语言能提供这种多功能性。

就这样……JavaScript赢得了移动开发。

桌面开发(Desktop)

Electron

当然,并不是所有的事情都发生在Web上。桌面应用程序对于我们当前这个依赖技术的世界的运营中也至关重要。

但是,既然Web现在能够提供功能齐全的应用程序,为什么我们还要开发桌面软件,并对其进行不同的处理呢?

实际上,JavaScript赶上桌面端的性能需求,只是个时间问题。

所以,Electron诞生了。

当然,在桌面编程的时候,还有更高效的语言可以使用,但对于我们今天使用的大多数应用程序来说,JavaScript已经足够了。

多亏了Cheng Zhao和Github,创建了一个能够改变桌面计算面貌的框架。

Electron不仅让桌面应用程序的开发变得更加简单,而且也能兼容Mac, Windows和Linux,它构建的应用可在这三个操作系统上面运行。

虽然Windows仍然是当今最普及的操作系统,Mac的稳定增长已经持续了15年,越来越多的开发者每天都在使用Linux。此外,像树莓派这样的小玩具也会让Linux出现在许多以前只有windows或Mac的家庭中。我认为你可以理解为什么跨操作系统的开发会具有巨大的优势……而这仅仅是个开始。

截止到现在,Node生态系统已经能够完全覆盖Web开发、移动开发和桌面开发。提供了一个能够在这些所有的平台建立相同用户界面的技能组合。

就这样……JavaScript赢得了桌面开发。

后端开发

ExpressJS

我不想在这里介绍NPM(节点包管理器)上提供的无数软件包,这些包可以方便后端开发,因此,我只会提到Express sjs,有一个简单但深刻的理由:

Node是为后端而构建的。

而且,Node生态系统中的JavaScript已经成为了一种多用途的工具,已经被用于开发自己的服务器应用程序。在Node创建之前,JavaScript基本上只支持浏览器。它不需要执行复杂的服务器端操作,如数据库读取、图像转换或压缩。但现在它可以……

而且,正如以上几个例子一样,这种对代码共享和重用显着的简化也产生了一些明显的副作用。

其中一个副作用就是服务器端渲染。

你get到了吗?

服务器端

渲染

这两件事有什么共同点?

传统意义上来说,没什么。但“前端”(JavaScript)或“后端”(PHP、Java、Python、Ruby等)的开发通常是由两个完全独立的团队来维护。

两个团队的人非常不同。

但现在不再是了!

感谢Node,我们现在能够在用户的浏览器需要渲染一件东西之前,在服务器端组装复杂的用户界面。这就是为什么现在Web如此时髦的原因。因为Node已经消除了后端和前端之间的界限。

就这样……JavaScript赢得了后端开发。

游戏开发

Unity 3D

我把这个放到了最后,因为它并不是真正的“Node”,而是JavaScript的东西,我想稍微宽泛一些:

JavaScript的成功不是因为它优于其他语言。它的成功是一个直接的结果,它对几乎每个社区都能够适应。

JavaScript开发者并非纯粹主义者。

我们喜欢我们的语言(不是),版本分散、依赖于转译、跨平台、前沿、不断发展,以及以前没有语言的地方。

就像游戏开发!

当Unity 3D首次推出基于JavaScript的“UnityScript”作为游戏开发工具的时候,我当时就意识到,JavaScript将会做一些非常酷的事情。这是该公司首次进军非Web开发领域。

这是一个明确的迹象,表明JavaScript可以做的不仅仅是打开“飞出”菜单,在页面上调整字体大小。它可以做更多的事情,让你给这篇文章或者一张图片点赞。它可以处理沉浸式的跨平台游戏体验。那些曾经被限制在Chrome、Firefox和Internet Exploder的开发者,突然之间也成了一名游戏开发者。

虽然Unity最近宣布他们将不在支持UnityScript,但我还是要说:

就这样……JavaScript赢得了游戏开发。

好吧,也许不是。

结语

我不知道这个征服会在什么时候停止,但Node正在疯狂爆发。它正在颠覆一个又一个的发展难题,为一个软件开发的世界铺平了道路,在这个世界里,一种语言可以统治所有。我确实觉得我需要重申一下——以防被忽视:

在任何一个领域,JavaScript都不是最佳语言。

JavaScript的优势在于它的多功能性。它来自开放式的社区,它采用了这种无分类、多态的脚本语言,并将其转变为当今最强大的开发生态系统。

如果你有不同的看法,欢迎在留言区互动。

原文链接:https://hackernoon.com/javascript-has-already-won-235b29ed126b

译者:36氪

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了
分享
评论(21)
精彩评论
9

引用来自“eechen”的评论

Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.

引用来自“昵称非法已被屏蔽”的评论

行行懂,样样瘟
只喷两点:

Electron最近才流行起来, 打包一个简单的electron大概20多M, 但是Electron并不是用来写hello的, 你知道额外写 3M 的javascript和css代码 能堆多少个界面..
vscode这么复杂的基于electron的editor, 安装包60多M也不算大吧?
已经有像vs code, slack, mongobootster等这些超级优秀的基于electron开发的桌面应用, 多少开发者受益. 瞎JB喷.


TypeScript是JavaScript的超集, 难道有人会TS, 不会JS, 你拿Angular默认用TS举例, 你不知道Angular是三大前端框架中最不受欢迎的框架. 另外两大框架默认为什么不用TS,
因为ES7 + Babel写出来的代码简洁高效, 非要脱裤子放屁给弱类型语言加出一堆类型系统.

对不起, 我只喜欢简单的东西.

大家继续.

7
Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.
6
这作者完全是在意淫,所谓Node.js 系列的产品,都是一些前端人员为了提高逼格,搞出来一些让后端人员看不懂的东西。。。。开发效率没见提升多少。
5
老老实实做好js前端 别扯了裤裆
1
在任何一个领域,JavaScript都不是最佳语言。人家在结语中都说了,果然是为了喷而喷啊
最新评论
1
在任何一个领域,JavaScript都不是最佳语言。人家在结语中都说了,果然是为了喷而喷啊
0
世界终将大统
0

引用来自“eechen”的评论

Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.
Unity3D 在新版本已经要剔除 JavaScript 了,全面使用 C# 做开发。记得看到这个消息的内容大概是说统计的项目里不到1%(这个数字记不太清了,就是很少)的JavaScript项目,社区投票什么的搞了一阵。最后决定标记为弃用,用几个版本的迭代,最后剔除出Unity3D。为了把更多的精力用到 着色器 和 插件管理 上。
0
我觉得现在学会PHP,javascript, python这三种脚本语言,能做的事已经非常多了。如果对于科学计算python比javascript更好,那就没有必要非得用javascript实现。同理如果PHP实现服务器渲染界面比node更好,也没有必要非要用node实现。学会使用多种编程语言又不是很难,javascript本来又不是为后端设计的,为什么要执着于用javascriptP实现一切?不过是为信仰而已,并没有从自己开发的成果作为一个尽善尽美的产品来考虑。
0
这篇就是吹
1
行了,以后不是PHP是世界上最好的语言,而是JS是世界上最好的语言了。。
0
javascript确实很有用,但也别太不把其他语言放在眼里了。。
0
标题党 言过其实了
0
日常撕逼系列
0
凡是想着一统天下的,最终都是扯淡的。
1
ES 语法自由与挑战并存,让很多人都能怼一发,让更多人愿意去怼一发,如此才有了庞大的 npm 生态。 特点如此,无论好坏!
1
node_modules里面各种依赖包,非常不喜欢。express里面92个包,thinkjs里 636个包,我的天
0

引用来自“eechen”的评论

Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.

引用来自“昵称非法已被屏蔽”的评论

行行懂,样样瘟

引用来自“cyper”的评论

只喷两点:

Electron最近才流行起来, 打包一个简单的electron大概20多M, 但是Electron并不是用来写hello的, 你知道额外写 3M 的javascript和css代码 能堆多少个界面..
vscode这么复杂的基于electron的editor, 安装包60多M也不算大吧?
已经有像vs code, slack, mongobootster等这些超级优秀的基于electron开发的桌面应用, 多少开发者受益. 瞎JB喷.


TypeScript是JavaScript的超集, 难道有人会TS, 不会JS, 你拿Angular默认用TS举例, 你不知道Angular是三大前端框架中最不受欢迎的框架. 另外两大框架默认为什么不用TS,
因为ES7 + Babel写出来的代码简洁高效, 非要脱裤子放屁给弱类型语言加出一堆类型系统.

对不起, 我只喜欢简单的东西.

大家继续.

http://releases.mozilla.org/pub/firefox/releases/57.0.4/win64/zh-CN/
要知道Firefox 57如此完整的一个现代浏览器,安装包也才【37M】.
所以60MB或者20MB的安装包大不大呢?
不是哪个electron应用都是VSCode或者Slack.
别不把用户的内存当回事.
9

引用来自“eechen”的评论

Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.

引用来自“昵称非法已被屏蔽”的评论

行行懂,样样瘟
只喷两点:

Electron最近才流行起来, 打包一个简单的electron大概20多M, 但是Electron并不是用来写hello的, 你知道额外写 3M 的javascript和css代码 能堆多少个界面..
vscode这么复杂的基于electron的editor, 安装包60多M也不算大吧?
已经有像vs code, slack, mongobootster等这些超级优秀的基于electron开发的桌面应用, 多少开发者受益. 瞎JB喷.


TypeScript是JavaScript的超集, 难道有人会TS, 不会JS, 你拿Angular默认用TS举例, 你不知道Angular是三大前端框架中最不受欢迎的框架. 另外两大框架默认为什么不用TS,
因为ES7 + Babel写出来的代码简洁高效, 非要脱裤子放屁给弱类型语言加出一堆类型系统.

对不起, 我只喜欢简单的东西.

大家继续.

1
��作为平时娱乐的玩具就当玩游戏了 ,其乐无穷
6
这作者完全是在意淫,所谓Node.js 系列的产品,都是一些前端人员为了提高逼格,搞出来一些让后端人员看不懂的东西。。。。开发效率没见提升多少。
0

引用来自“eechen”的评论

Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.
行行懂,样样瘟
7
Unity 3D的JS方言UnityScript跟浏览器里的JS差别非常大,而且跟Node.js毛线关系都没有.
另外人家Unity 3D主推的是CSharp方言.

还有在服务器渲染界面,PHP都做了20几年了,现在Node.js还拿来吹?好意思么?
就算是没有Chrome和V8的时候,Web就很时髦了,否则你爹Google是怎么起来的?因为你Node.js么?

桌面开发用Electron,一个Hello World级别的应用都是一个浏览器的大小,还敢说赢得桌面开发?
如果说React Native和Cordova赢得了移动应用开发,那为什么我的手机更多的是原生应用?
为什么苹果还要开发Swift,谷歌还要扶正Kotlin,这俩都是傻×,Node.js粉最聪明?
最可笑的是,Angular用TS实现而不是JS实现,JS还好意思说我赢了.
就好像Kotlin被Google扶正了,然后Java说我赢了似的可笑.
5
老老实实做好js前端 别扯了裤裆
0

引用来自“Artrener”的评论

不喜欢js,但需要的时候也不得不学
语法诡异
顶部