【译】用其他语言来构建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。


相关文章
|
17天前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
6天前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
19天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
129 9
|
21天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
56 10
|
20天前
|
资源调度 前端开发 数据可视化
构建高效的数据可视化仪表板:D3.js与React的融合之道
【10月更文挑战第25天】在数据驱动的时代,将复杂的数据集转换为直观、互动式的可视化表示已成为一项至关重要的技能。本文深入探讨了如何结合D3.js的强大可视化功能和React框架的响应式特性来构建高效、动态的数据可视化仪表板。文章首先介绍了D3.js和React的基础知识,然后通过一个实际的项目案例,详细阐述了如何将两者结合使用,并提供了实用的代码示例。无论你是数据科学家、前端开发者还是可视化爱好者,这篇文章都将为你提供宝贵的洞见和实用技能。
42 5
|
23天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
21 4
|
24天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
43 1
|
9天前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。
|
12天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
13天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
23 0