JavaScript虽然是很受欢迎的语言,但是并不适合所有人,那么有哪些替代方案呢?本文将分析5种JavaScript替代方案。
1995年,Netscape(网景通信公司)聘请Brendan Eich为当时最受欢迎的网络浏览器Netscape Navigator添加一种新语言。Netscape希望增强网络的可编程性。
LiveScript在1995年末发布了测试版的浏览器,并在最终发布前改名为JavaScript,以利用Netscape与Sun Microsystems的合作关系,后者是流行的Java语言背后的公司(尽管JavaScript本质上与Java没有任何关系)。
Mozilla的创始人之一是Eich,他在10天内开发出了JavaScript的原始版本。在接下来的25年里,JavaScript从一种不受欢迎且受到严重限制的语言发展成为现代web应用程序构建的强大基础。如今,JavaScript主导了浏览器,并通过Node.js占领了大部分服务器。
然而,JavaScript并不是所有开发人员都喜欢的语言。Eich在早期做出了一些古怪的决定,这些决定一直持续到2019年,其中包括典型的继承、“this”以及JavaScript的侵略性和不一致的类型强制。
近年来,开发人员已经创建了JavaScript的替代品。JavaScript仍然是在浏览器中运行的唯一语言,因此这些新语言主要是编译或转换为JavaScript。CoffeeScript是第一个类似的脚本,但很快就被众多竞争对手所超越,每个竞争对手都对JavaScript进行了改进。
Dart
Dart是一种面向对象的c语言,由Google创建,作为JavaScript的替代品。它抛弃了JavaScript的原型继承系统,而采用了更传统的面向对象的方法,任何使用过Java或c++的人都熟悉这种方法。与JavaScript不同,Dart是一种静态类型的语言,消除了JavaScript代码中的常见错误源。Dart支持类型推断,因此没有必要在每次声明变量或函数时都包含类型样板。
也许Dart最令人激动的功能是它在网络之外的可用性。Dart代码可以转换为JavaScript以便在浏览器中运行,但它也可用于独立应用程序和服务器端开发。Google的Flutter UI工具包是一个可移植的前端框架,可用于桌面、移动设备和Web,构建本机应用程序。
TypeScript
TypeScript是微软向更好的JavaScript进军的第一步。与Dart不同,TypeScript不是一种全新的语言,而是JavaScript的超集。TypeScript编译器可以编译有效的JavaScript,但是TypeScript增加了几个新特性,改进和现代化了JavaScript的限制,其中最重要的是一个可选的类型系统。
许多JavaScript问题都是由于缺少静态类型导致的,这导致了编译器在运行前进行检查时就被限制了。顾名思义,TypeScript实现了一种类型表示法,开发人员可以使用这种表示法为web应用程序编程保证安全。与Dart一样,TypeScript支持类型推断。
值得一提的是,TypeScript比它的竞争对手谷歌更受欢迎。比如,虽然Angular是谷歌的项目,但它的框架是用TypeScript开发的。TypeScript也可以与React和Vue一起使用。
Elm
Dart和TypeScript与JavaScript和C. Elm有明显的亲缘关系。它是一种静态类型的函数语言,与Haskell相比更类似于C,但没有Haskell那种令人挠头的复杂性。
Elm本质上是一种用于构建web前端的特定于领域的语言。
Elm不像JavaScript那样是一种通用语言,相反,创建者Evan Czaplicki专注于构建最好的前端web应用程序开发体验。Elm的主要优点是,通过静态类型和不可变值消除了前端代码中的许多潜在bug。Elm宣称自己是一种“在实践中没有运行异常”的语言,这意味着如果一个Elm程序运行,它就不太可能在生产中遇到阻止性能的bug。
以下是Elm代码示例
Elm代码看起来和JavaScript一点也不像,但是它有简单直观的语法,Elm对学习过JavaScript的人来说应该不难。
ClojureScript
ClojureScript是Clojure编程语言的一个版本,可以编译为JavaScript。Clojure是运行在Java虚拟机上的Lisp。与Elm一样,Clojure也是一种函数性语言,具有不可变的数据类型。与Elm不同,它是一种通用编程语言,可以在后端与JVM一起使用,也可以通过JavaScript在前端使用。
与所有Lisp一样,Clojure是用括号分隔的s表达式编写的。用Clojure的创建者Rich Hickey的话来说,ClojureScript试图用Clojure(简洁且功能强大的编程语言)取代JavaScript,从而解决客户机/嵌入式应用程序开发中的薄弱环节。Clojure可以与React和其他流行的JavaScript框架一起使用。
当Netscape雇用Brendan Eich时,他们计划将Scheme集成到Navigator中,而不是创建一种新的语言。Scheme是一种Lisp,因此,如果历史的发展稍微有些不同,Lisp可能已经成为世界上最流行的编程语言家族。JavaScript通过一流的函数、闭包和lambdas保留了一些“Lispiness”。在JavaScript开发过程中扮演关键角色并发明了JSON的道格拉斯•克罗克福德(Douglas Crockford)将JavaScript称为“披着C外衣的Lisp”。
Phoenix LiveView
之前讲过的语言可以编译成JavaScript,它们让开发人员无需编写JavaScript就可以构建客户端应用程序。
Phoenix LiveView与众不同。Phoenix是一个用相对较新的Elixir编程语言编写的web框架。Phoenix是一个服务器端框架。但我们为什么要在一篇专门讨论浏览器JavaScript替代方案的文章中讨论它呢?因为LiveView可以在许多web开发场景中替代JavaScript。
Phoenix的创建者Chris McCord称LiveView是“一个令人振奋的新库,它支持使用服务器呈现HTML,实现丰富的实时用户体验”。LiveView使用Phoenix channel在浏览器和服务器之间创建双向连接。LiveView基于Websockets,可以在不编写JavaScript的情况下创建交互体验。人们自然会担心这种方法太慢而无法使用,但是LiveView的设计目的是最小化数据传输,并且在实践中可以用于构建低延迟接口。
但LiveView有局限性,我们不建议在LiveView中构建像Google Docs这样的复杂应用程序。如果离线功能对应用程序很重要,那么LiveView也不是合适的解决方案。但是,对于表单、实时界面更新和数据验证等功能,Phoenix LiveView是JavaScript的可行替代方案。它比大多数JavaScript应用程序小得多;,LiveView的浏览器代码大约是React的四分之一。
总结
我们已经研究了JavaScript的五种替代方法,每种方法都提供了一种创建Web应用程序和交互式界面的不同方式。当然目前大部分人使用的依然是JavaScript,因为它是Web浏览器支持的唯一语言。
但随着WebAssembly被广泛采用,这种情况可能即将发生变化。所有主流浏览器都支持WebAssembly,将来它很可能成为面向Web的语言的默认编译目标。对于Web开发人员来说,探索WebAssembly的可能性是个很不错的方向。
原文网址:https://jaxenter.com/5-alternatives-to-javascript-159787.html