前端开发的JavaScript的5种替代方法

发布于:2021-01-08 17:38:25

0

1472

0

前端 开发 JavaScript

JavaScript并不适合所有人,但是有哪些替代方案?在本文中,Future Hosting的马修·戴维斯(Matthew Davis)研究了其中的5种,权衡了利弊。

1995年,Netscape Communications聘请了Brendan Eich为当今最流行的Web浏览器Netscape Navigator添加新语言。Netscape希望增强Web的可编程性。

结果是:LiveScript于1995年末发布,带有浏览器的beta版本,并在最终发行之前重命名为JavaScript,以利用Netscape与流行的Java语言背后的公司Sun Microsystems的合作关系(尽管JavaScript与Java无关。 )。

后来与他人共同创立Mozilla的Eich在10天内开发了JavaScript的原始版本。在接下来的25个世纪中,JavaScript从一种广为人知且受到严重限制的语言演变为构建现代Web应用程序的强大基础。如今,JavaScript主导了浏览器,并通过Node.js占领了许多服务器空间。

但是,JavaScript并不是每个开发人员都喜欢的语言。早期,Eich做出了一些古怪的决定,这些决定直到2019年仍然存在,包括原型继承,“ this”和JavaScript激进且不一致的类型强制。

近年来,开发人员创建了JavaScript的替代方案。JavaScript仍然是在浏览器中运行的唯一语言,因此这些新语言可以编译(或转换为JavaScript)。CoffeeScript是第一个获得广泛普及的应用程序,但是很快被众多竞争者所取代,每个竞争者都对JavaScript进行了独特的改进。

Dart

Dart是Google创建的一种面向对象的类似于C的语言,可以代替JavaScript。它取消了JavaScript的原型继承系统,转而采用了一种更为传统的面向对象方法,该方法对于使用Java或C ++的任何人都是熟悉的。与JavaScript不同,Dart是一种静态类型的语言,消除了JavaScript代码中常见的错误源。Dart支持类型推断,因此不必在每次声明变量或函数时都包含类型样板。

Dart最令人兴奋的功能可能是它在网络之外的可用性。Dart代码可以转换为JavaScript以在浏览器中运行,但是也可以用于独立应用程序和服务器端开发。Google的Flutter UI工具包是一个可移植的前端框架,可用于在台式机,移动设备和Web上构建本机应用程序。

TypeScript

TypeScript是Microsoft争夺更好JavaScript的切入点。与Dart不同,TypeScript不是一种全新的语言,而是JavaScript的超集。有效的JavaScript可以由TypeScript编译器进行编译,但是TypeScript添加了一些新功能,这些功能可以改善JavaScript的局限性并使之现代化,其中最重要的是可选的类型系统。

许多JavaScript的失败是由于缺少静态类型而引起的,从而限制了编译器在运行时可以执行的检查。顾名思义,TypeScript实现了一种类型表示法,开发人员可以使用它来为Web应用程序编程带来类型安全性。与Dart一样,TypeScript也支持类型推断。

值得一提的是,TypeScript比其Google竞争对手更受欢迎。该角框架与开发TypeScript,即使它是谷歌的项目。TypeScript也可以与React和Vue一起使用。

Elm

DartTypeScript具有可识别的亲属到JavaScript和C.Elm是不同的。它是一种静态类型的函数式语言,比C语言更类似于Haskell,但没有Haskell的头复杂性。

本质上,Elm是用于构建Web前端的特定于域的语言。

Elm不是像JavaScript这样的通用语言,并且不会尝试成为语言。相反,创建者Evan Czaplicki专注于构建最佳的前端Web应用程序开发体验。Elm的主要优点是,通过静态类型和不可变值,它消除了前端代码中的许多潜在错误。Elm宣传自己为一种“在实践中没有运行时例外”的语言,这意味着,如果Elm程序完全运行,那么在生产中就不会遇到令人震惊的错误。

以下Elm代码示例来自该语言的简介,这是Elm优秀文档的一部分。

update msg model =   case msg of     Increment ->       model + 1     Decrement ->       model - 1 view model =   div []     [ button [ onClick Decrement ] [ text "-" ]     , div [] [ text (String.fromInt model) ]     , button [ onClick Increment ] [ text "+" ]     ]

Elm代码看起来不像JavaScript,但是它具有简单直观的语法。任何学习过JavaScript的人都应该对Elm没什么麻烦。

ClojureScript

继续远离类似JavaScript的语言,我们来到ClojureScript,它是Clojure编程语言的一种版本,可以编译为JavaScript。Clojure是在Java虚拟机上运行的Lisp。与Elm一样,Clojure是一种具有不变数据类型的功能语言。与Elm不同,它是一种通用编程语言,可以在JVM的后端和通过JavaScript的前端使用。

(ns hello-world.core)
(println "Hello world!")

像所有Lisps一样,Clojure用S表达式编写,并用括号分隔。在话Clojure的创造者,丰富希基的,ClojureScript“旨在通过使用Clojure,一个强大,简洁和强大的编程语言JavaScript的更换,以解决在客户端/嵌入式应用开发故事中的薄弱环节。” Clojure可以与React和其他流行的JavaScript框架一起使用。

作为历史记录,Netscape雇用Brendan Eich时,他们计划将Scheme集成到Navigator中,而不是创建一种新语言。Scheme是Lisp,因此,如果历史有所不同,Lisp可能会成为世界上最受欢迎的编程语言家族。JavaScript通过一流的函数,闭包和lambda保留了部分“ Lispiness”。道格拉斯·克罗克福德(Douglas Crockford)在JavaScript的开发中发挥了关键作用,并发明了JSON,他将JavaScript称为“衣冠楚楚的Lisp”。

Phoenix LiveView

我们研究过的语言可以编译为JavaScript。他们使开发人员无需编写JavaScript即可构建客户端应用程序。

Phoenix LiveView是不同的。Phoenix是使用相对较新的Elixir编程语言编写的Web框架。Phoenix是一个服务器端框架,为什么我们要在一篇专门针对浏览器JavaScript替代品的文章中讨论它呢?因为LiveView可以在许多Web开发方案中替代JavaScript。

Phoenix的创建者Chris McCord称LiveView为“一个令人兴奋的新库,它通过服务器渲染的HTML来实现丰富的实时用户体验。” LiveView使用Phoenix频道在浏览器和服务器之间创建双向连接。LiveView基于Websockets,可用于创建交互式体验,而无需编写JavaScript。很自然地担心这种方法太慢而无法使用,但是LiveView旨在最大程度地减少数据传输,并且在实践中可用于构建低延迟接口。

LiveView有局限性。不建议在LiveView中构建复杂的应用程序,例如Google Docs。如果离线功能对应用程序很重要,则LiveView不是正确的解决方案。但是,对于表单,实时界面更新和数据验证等功能,Phoenix LiveView是JavaScript的可行替代方案。它也比大多数JavaScript应用程序小得多。LiveView的浏览器代码约为React大小的四分之一。

总结思想

我们研究了编写JavaScript的五种方法,每种方法都提供了不同的方法来创建Web应用程序和交互式界面。目前,无法避免使用JavaScript,因为它是Web浏览器唯一支持的语言。

但是随着WebAssembly被更广泛地采用,这种情况可能会改变。所有主要的浏览器都支持WebAssembly,并且将来,它有可能成为针对Web的语言的默认编译目标。那是另一篇文章的主题,但是对于Web开发人员来说,开始探索WebAssembly的可能性将是一个好主意。