热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript_JavaScript已经赢了

javascript我在编程语言之间的战争中声称自己是“胜利者”,因此该帖子引起了极大的抗议。我承认,我的头衔可能是引起争议的,可能是“点

Javascript

我在编程语言之间的战争中声称自己是“胜利者”,因此该帖子引起了极大的抗议。 我承认,我的头衔可能是引起争议的,可能是“点击行为”,但我仍然要强调一点, 这篇文章与JS如何成为“最佳”语言无关
它只是关于它所覆盖的纯粹领土,以及它曾经允许过的简单前端开发人员做更多事情的方式。 这是我在职业生涯中真正爱上的一种多功能性,我感到有必要鼓励。
所以…

在编程世界中,很久以前就发生过战争。 自计算机问世以来,科学家一直在寻找完美的编程语言。 一个接一个地创建了一种新的语言以适应某些目的。 伴随着这种新语言,出现了一个新的技术时代,一个强大的社区,一百万个图书馆和开放源代码的贡献,以及(不可避免的)新的局限性。 自从在Java小程序和Flash可憎性的汇编编程的古老时代(我曾经是Flash开发人员...)在网络中占据主导地位很长时间以来,我们已经看到语言来来去去的原因无非就是它们的用处累死了。

世界朝着另一个方向前进...

这种曾经崭新的语言现在变成了旧语言,开发人员逐渐减少,一个新手开始发出一些声音。

现在,Javascript已经存在了数十年。 因此,您可能想知道,“他要去哪里?” 好吧,这篇文章不是关于“ Javascript”的。 也没有关于它之前兴衰的许多语言的信息。 也不关乎Javascript如何“新颖而闪亮”。

这篇文章是关于Node的。

我们确实需要开始区别对待。 因为Node是别的东西。 它不仅是一种语言。 这是一个生态系统。

这就是这篇文章的主题。

好吧,不完全是。 我不会详细介绍百万个半原因,因为生态系统是全世界有史以来最创新的开源协作的推动者。 不,这是另一天的话题。 现在,我仅说明遍历现代编程的五个关键领域,从而Node已经赢得了一场争取完美语言的古老战争:

网络

React,Angular,Vue

React,Angular和Vue很容易成为当今最重要的前端框架。 Facebook,Google和FOSS社区共同开发了令人难以置信的高效工具,用于开发交互式用户界面。

因此,实际上,您今天在网络上所做的所有事情都可以通过高度交互,美观且易于使用的界面来实现。 这些框架的实现完全是由于您已经知道的Node生态系统。

您会看到,毫无疑问,Javascript一直统治着前端Web开发,但是React,Angular和Vue将其带入了另一个层次。

这是UI的时代。

前端开发人员不再回避构建复杂的单页Web应用程序和成熟的软件套件的时代。 曾经是Web开发人员的地方,现在是软件开发人员。

那样……Node赢得了网络。

移动

React本机

本部分不仅将说明Node在移动方面的成功,而且还将提出另一个关键点:

节点是跨平台的。

不只是在“哦,很酷,它可以在我的手机上工作!” 种方式。 甚至没有出现在“哇,我的手机,平板电脑,笔记本电脑和电视都可以使用YouTube!” 种方式。

节点以最重要的方式跨平台。 对于开发人员而言,它确实是跨平台的。 上面提到的实际构建“哦,很酷”和“哇”东西的人不屑一顾。

React Native只是Node生态系统中开发的框架的一个示例,该框架以以前没有其他框架的方式弥合了前端开发和移动应用程序开发之间的鸿沟。

移动开发的最大压力一直是网络的拉动。 但是,借助React Native和Node生态系统,开发人员可以构建一个与Web,iOS和Android兼容的应用程序。 没有其他语言可以提供这种多功能性。

那样……Node赢得了移动市场。

桌面

电子

当然,并非所有事情都在网络上发生。 桌面应用程序对于我们在当今技术依赖的世界中的运营方式也至关重要。

但是,当网络现在能够提供功能齐全的应用程序时,为什么我们应该对台式机进行任何处理呢?

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

因此,电子诞生了。

当然,在为桌面编程时,仍然可以使用更有效的语言,但是对于我们今天使用的大多数应用程序来说,Javascript绰绰有余。

感谢Cheng Zhao和Github,创建了一个框架,该框架正在改变桌面计算的面貌。 Electron不仅将Web应用程序开发中已经添加了桌面应用程序的开发内容添加到Web开发人员中,而且以完全跨OS兼容的方式完成了此工作。

尽管Windows仍然是当今使用最广泛的OS,但Mac一直在稳定增长15年,并且每天都有越来越多的开发人员转向Linux(就像我刚才所做的那样) 。 此外,像Raspberry Pi这样的小玩具正在使Linux弹出,而不仅仅是少数几个以前只有Windows或Mac的家庭。 我认为您可以理解为什么跨OS开发具有如此巨大的优势…… 而这仅仅是开始

现在,Node生态系统已完全涵盖了Web,移动和桌面。 一种技能集,能够在所有这些地方构建相同的UI。

那样……Node赢得了桌面。

后端

ExpressJS

我不想在这里讨论NPM(节点软件包管理器)上可用的无数软件包,这些软件包可促进后端开发,因此,我只想提及ExpressJS,这是为了简化一个过程,但要点是:

Node是为后端构建的。

而且,Node生态系统中Javascript已成为一种通用工具,已被用来开发自己的服务器应用程序。 现在,这似乎并不是最令人印象深刻的壮举,但是让我们考虑一下,直到创建Node为止,Javascript几乎只限于浏览器。 它不需要执行复杂的服务器端操作,例如数据库获取,图像转换或压缩。 但是现在可以 ……

而且,与上面的几个示例一样,这种代码共享和重用的显着简化产生了一些显着的副作用。

这样的副作用之一就是服务器端 渲染

你明白了吗?

服务器端
渲染

这两件事有什么共同点?

传统上,没有。 这两个职责始终被委托给其“前端”(Javascript)或“后端”(PHP,Java,Python,Ruby等,等等)处理程序。 通常由两个完全独立的团队维护。

截然不同的人,后端和前端开发人员…

但是不再!

借助Node,我们现在能够在用户的浏览器需要渲染事物之前在服务器端组装复杂的用户界面。 这就是当今网络如此敏捷的原因。 因为Node 删除了后端和前端之间的边界。

那样……Node赢得了后端。

赌博

Unity 3D

我将其保存为最后一个,因为它实际上不是“ Node”,而是Javascript,因此我想在更广的范围内进行说明:

Javascript的成功并不是其优于其他语言的结果。 它的成功是它对几乎每个社区的适应程度的直接结果。

Javascript开发人员不是纯粹主义者。

我们喜欢我们的语言(不是); 版本碎片化,依赖于编译器的,跨平台的,前沿的,不断发展的,并且到达了以前没有语言的地方。

喜欢游戏开发!

当Unity 3D首次引入其基于Javascript的“ UnityScript”作为游戏开发手段时,我看到了,Javascript将做一些非常酷的事情。 这是它首次进入非Web开发领域,这是即将发生的事情的明显标志。

很明显,Javascript可以做的不仅仅是打开弹出菜单和调整页面上的字体大小。 它所要做的不只是让您喜欢这篇文章并喜欢这张照片。 它可以处理身临其境的跨平台游戏体验。 曾经只限于Chrome,Firefox和Internet Exploder的那些开发人员突然成为了游戏开发人员。

尽管Unity最近宣布将放弃对UnityScript的支持,但我仍然要说:

像那样……Javascript赢得了游戏。

好吧,也许不行。 但这还不是第十二轮吗?

威尼,维迪,维奇

我不知道什么时候征服会停止,但是Node横冲直撞。 它正在一个接一个地推翻开发难题,并为软件开发世界铺平了道路。 我确实觉得我需要在巨魔之前重申一下,以防万一它被忽略了:

Javascript并不是每项工作的最佳语言。

Javascript的优势来自其多功能性。 它来自开放武装的社区,该社区已经接受了这种无类的,小的,多态的脚本语言,并将其变成了当今最强大的开发生态系统。

不同意 ? 我希望在评论中听到它。

否则,请分享一些鼓掌,并表示支持世界上最具创新性的语言 !

我叫Jonny Asmar,衷心感谢您抽出宝贵的时间阅读我的帖子!

15年前,我开始在记事本中编写代码,但从未停止过。 虽然我主要从事React / Redux&Node的工作,但我对技术的热情远不止UI开发,这是我与您分享这种热情的努力。

您可以 在JonnyAsmar.com上了解有关我的更多信息 , 在GitHub上 查看 我的一些代码 ,或者通过 jonnyasmar@me.com 与我 联系

翻译自: https://hackernoon.com/Javascript-has-already-won-235b29ed126b

Javascript



推荐阅读
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • feat: Enhances Jest Testing Capabilities with Snapshot Support ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
author-avatar
手机用户2502870105
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有