【译】用其他语言来构建JavaScript的工具--这是新的趋势吗?

简介: 【译】用其他语言来构建JavaScript的工具--这是新的趋势吗?

640.jpg

【最近忙成狗了,很久没有更新公众号了。本篇翻译,要感谢AlecHe的支持】


这是一篇译文。

原文链接:https://2ality.com/2020/10/js-plus-other-languages.html

原文标题:Writing JavaScript tools in other languages – a new trend?


正文开始


最近我们发现,用非JavaScript的语言来构建的JavaScript工具越来越多。这篇博文列举了一些例子,并解释了不用JavaScript的原因。


1. 一些例子


我在Twitter上询问了大家喜欢用什么非JavaScript语言来构建JS工具,这是一些大家提及到的工具:

Build工具和编译器:


  • esbuild - Go: JavaScript打包和压缩的工具。它可以将JavaScript和TypeScript的代码进行打包,用于Web的分布式部署
  • swc - Rust: JavaScript/TypeScript的编译器
  • Google Closure Complier - Java: 用于JavaScript的检查和优化

检查代码风格和格式化:


  • RSLint - Rust: JavaScript的代码风格检查器
  • Flow - OCaml: JavaScript的静态类型检查器
  • dprint - Rust: 代码格式化平台


命令行管理工具:


  • Fast Node Manager (fnm) - Rust: Node.js的版本管理器
  • Volta - Rust: 管理JavaScript的命令行工具,例如node,npm,yarn


2. 为什么用其他语言


用非JavaScript语言(或者是编译成JavaScript)有什么好处呢?

  • 它们可以编译成本地二进制文件从而可以有更快的启动时间
  • 本地的二进制文件也通常比JavaScript代码运行得更快
  • 许多语言可以使同步编程变得更加容易

另外,许多非JavaScript语言现在可以被编译成WebAssembly,这使二进制文件几乎可以和JavaScript一样方便并且能够很好地和JS集成。

考虑到每个语言都有自己的特性,一个非JavaScript语言也可能更好地适应某一个特定的任务。比如,OCaml/ReasonML,Haskell,和其他的函数式编程语言可以支持代数数据类型,可以帮助处理像在分析和编译范式语言时用到的抽象语法树这样的数据结构。


2.1 使用JavaScript的优势


使用JavaScript也有优势:


  • 更容易找到工具的贡献者:从一方面来说,熟悉非JS语言的程序员对于构建JS相关的工具比较不感兴趣。另一方面,非JS语言对于JavaScript程序员来说也是一种障碍。
  • 你可以“内部测试” - 把这个工具的源代码用于测试这个工具。使用工具的源代码进行测试可以使你更加明白你对于这个工具的需求是什么。
  • JavaScript有一个丰富完善的的生态系统,有许多语言定义,文档,优秀的工具,以及许多库(通过npm安装管理)。
  • 对于函数式编程来说,TypeScript并不像特定的语言一样优雅,但也和它差不了多少并且还有JavaScript的生态系统支持。比如,差别联合类型比代数数据类型稍微麻烦些,但是有着许多一样的有点(比如编译时间的详尽性检查)。


如果追求高性能,AssemblyScript可能是一个选择:它是一个更加严格的TypeScript版本,并且可以被编译成WebAssembly。


相关文章
|
29天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js:从零开始构建后端服务
【10月更文挑战第42天】在数字时代的浪潮中,掌握一门后端技术对于开发者来说至关重要。Node.js,作为一种基于Chrome V8引擎的JavaScript运行环境,允许开发者使用JavaScript编写服务器端代码,极大地拓宽了前端开发者的技能边界。本文将从Node.js的基础概念讲起,逐步引导读者理解其事件驱动、非阻塞I/O模型的核心原理,并指导如何在实战中应用这些知识构建高效、可扩展的后端服务。通过深入浅出的方式,我们将一起探索Node.js的魅力和潜力,解锁更多可能。
|
24天前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
17天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
33 12
|
22天前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
39 3
|
24天前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
27天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
40 5
|
26天前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
29天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
35 4
|
1月前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
28天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API