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


相关文章
|
9月前
|
JavaScript 前端开发 物联网
JavaScript:构建动态世界的引擎
JavaScript:构建动态世界的引擎
|
9月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态网络的引擎
JavaScript:构建动态网络的引擎
|
9月前
|
前端开发 JavaScript 开发者
JavaScript:无处不在的Web语言
JavaScript:无处不在的Web语言
|
9月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态Web的核心力量
JavaScript:构建动态Web的核心力量
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
前端开发 搜索推荐 JavaScript
如何通过DIY.JS快速构建出一个DIY手机壳、T恤的应用?
DIY.JS 是一款基于原生 Canvas 的业务级图形库,专注于商品定制的图形交互功能,帮助开发者轻松实现个性化设计。适用于 T 恤、手机壳等多种商品场景。它自带丰富功能,无需从零构建,快速集成到项目中。通过创建舞台、添加模型、定义 DIY 区域和添加素材四个步骤即可完成基础用法。支持在线演示体验,文档详细,易上手。
640 57
|
12月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
10月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
2987 0
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。