文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript的未来在哪呢

2024-04-02 19:55

关注

这期内容当中小编将会给大家带来有关JavaScript的未来在哪呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

作为一个见证了过去17年编程语言发展的软件开发者,笔者试图在本文中对JavaScript进行一些预测。

如今,JavaScript无处不在,不仅仅应用在前端(浏览器)和后端(Node和Deno),也包括手机、电脑桌面软件,甚至两者的混合应用。它已经成为2020年求职人最想拥有的工作技能之一(根据StackOverflow的开发者调查)。

但为何会如此呢?这对JavaScript的未来又意味着什么?JavaScript的发展是否会顺风顺水?未来会不会有一个更新更好的语言诞生,从而推翻JavaScript无所不能的地位?本文将探讨一下这些可能性。

是什么让JavaScript如此受欢迎?

不管你是喜欢还是讨厌,JavaScript的流行都是毋庸置疑的。根据TIOBE的流行指数,在排名前十的语言中,JavaScript目前排在第七位。

这些不是随机数字或有偏见的民意调查,这些数据可以分析出我们的市场,对全球数以百万计的开发者进行调查,一切都在表明JavaScript是2020年的热门语言之一,对此你怎么看?

当然,这个问题可能有很多不同的答案,主要取决于你在挑选编程语言时看重什么,这是我的看法:

围绕着这样一个事实,发生了许多有趣的故事:JavaScript外部框架可能比实际开发者使用的更多。虽然这可能是一个夸张的说法(注意笔者这里说的是  "可能"),但这源于一个事实,那就是我们有这么多的人,试图让这门语言成为我们自己的语言,此举贡献巨大。这并不是一件坏事,证明了这是一个充满生命力并不断尝试发展的社区。

当笔者不得不使用其他语言时,非常怀念的一件事是,人们可以从原社区中获得大量的支持和帮助。这绝对是一个进步的标志,此举还有待完善,并有望在未来取得更多的成就。

撇开框架和库不谈,语言本身也在不断发展。不过值得庆幸的是,这种改变并不是由一个实体控制的。

要澄清一下:虽然JavaScript本身(这个术语)是由Oracle所拥有的,但这门语言是要遵循ECMAScript的规范。而这些规范其实是由社区本身间接控制的,并由TC39委员会来监管和组织。

通过考虑所有不同的建议以发展语言,并不断运行直到语言足够成熟。之后,如果想保持兼容的话,就由例行程序来实现这些更新,而且此后浏览器之间还存在纷争。

作为一个开发者,必须努力保持在兼容性和标准的范围内,因为你更希望你的代码能跨浏览器兼容。现在情况已经不是这样了,所有的例行程序都在努力跟上ECMAScript的最新版本。

· 一个生机勃勃的生态系统。

这与第一点很像。有更多的前端框架可以尝试,没必要去学习所有的框架。每天仅NPM中分享的模块就数以百万计。

这给刚开始尝试该编程语言的人制造了很多麻烦,但同时也吸引了更多的人加入,不同的框架和模块最终都会达成同一件事,只是方式不同而已。而这些不同的方式有助于引起更多个人开发者的共鸣。毕竟,React、Vue和Angular都能帮助开发者创建同样的APP,只需要选择自己喜欢的那一款即可。

那么,综合几年前的情况以及它的发展历程,你如何看待JavaScript的未来?

这绝对是一个很难回答的问题,先看看笔者的想法。

近期变化

在过去的几年里,这门语言正在不断发展。如果你是JavaScript的新手,也许还没有注意到,从ECMAScript  第5版到第6版有一个质的飞跃,在未来的版本中应该也会发生许多改动。如果它继续保持现在的路径和发展速度的话,笔者认为不久之后它可能会这样……

作为目标语言的JavaScript

即使JavaScript拥有令人惊叹的社区,为开发者提供工具和框架做了大量工作,却仍然有很大一部分人没有理由地讨厌JavaScript。

是的,没看错,确实有人讨厌它,或者至少不喜欢它的大块头,认为自己可以把它做得更好。于是,就有了CoffeeScript和后来的Dart以及现在的TypeScript这样的项目。

这并不是坏事,事实上,这是一个非常好的机会,让JavaScript不仅可以直接被全世界的开发者广泛使用,还可以成为很多transpiler创造者的目标语言,试图给开发者提供其他选择。

本质上,这场运动将为JavaScript打开大门,通向一个不同的浩瀚宇宙。自从Node.js进入市场并流行以来,JavaScript不再是  “前端语言”,允许公司简化他们的技术堆栈去形成一个跨领域的单一语言。

想一想,如果你也能用Python或Ruby做到这一点,会发生什么?这并不是多么疯狂的想法,过去已经有项目试图实现它,我们可能只是需要更多的时间。

前端开发的问题(笔者认为这是唯一的问题)是,你需要学习JavaScript才能进行工作。这与后端世界完全相反。目前,浏览器只允许一种语言为王,那就是JavaScript,如果想要更多的语言,就必须把你的代码编译(或者说是移植)成JavaScript。

当然,还有WebAssembly,如果他们有更多的能力去访问其他领域,如DOM,它很可能会取代JavaScript。但现在它只能在一个非常狭窄的领域发挥作用:前端的大量计算。这是一个性能工具,而不是一个完全独立的前端开发环境。

演变的例子

JavaScript发展到现在的另一个方式是通过社区开发的框架看到社区的需求。如果你已经使用JavaScript有一段时间了,特别是从ECMAScript  5开始,你可能会记得lodash和underscore等库。

对项目来讲,这些库都是必要的,因为它们为语言增加了额外的功能,如map、some、find、reduce、get、set、merge等方法。虽然在最近的更新中,有些功能已经渗透进语言本身,但这些库依旧有存在的必要性。

比如ECMAScript 6,增加了很多数组方法,给编程算法带来了相当大的提升。可选链使得 get  方法被淘汰,或者说几乎被淘汰。传播操作符也几乎淘汰了merge  方法,而这个列表还在继续更新。一个功能越是流行,TC39委员会就越会尝试将其纳入到语言中。

另一个明显的例子是如何引入类。JavaScript试图在一个面向使用者的世界中保持初心,但它失败了。要么是因为没有足够的拥护者,要么是因为没有正确的文档化。但是有那么多的开发者试图强行在上层建立一个OOP模型,于是最终在上层添加了一个薄薄的OOP层。

起初这很浮于表面,但随着不久之后私有字段的加入,它正在慢慢演变成一个更成熟的模型。道阻且长,这只是语言演变的一个例子,说明这门语言是如何发展的,尽管违背了它的初衷,但开发者社区的力量在支持它。

最后一个新增的框架是Svelte框架,它试图将反应性的概念带入语言本身,不像其他框架,比如React,它反而试图为开发者提供工作方法,将JavaScript还没有准备好的概念强加给他们。

使用Svelte框架,可以编写这样的代码:

<script>          let count =0;             functionhandleClick() {              count +=1;          } </script>              <buttonon:click={handleClick}>          Clicked {count} {count ===1?'time':'times'}     </button>

有一个按钮,点它标签值就会更新。当然,目前这需要编译成实际的JavaScript,你估计需要多长时间才能将类似的例子吸收到合适的ECMAScript规范中?

上述就是小编为大家分享的JavaScript的未来在哪呢了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯