译者 | 布加迪
审校 | 孙淑娟
本文介绍您可能还不知道的7个JAVAScript新项目。这些工具和框架涵盖一系列广泛的功能,预示着JavaScript开发领域的新趋势,比如原生应用程序创建、强类型全栈开发、Node.js运行时环境的简易替代者和浏览器内图形等。目前,所有项目都受到开发者的追捧,不会长期无人注意。
Tauri是一种用于构建桌面应用程序的JavaScript框架,也许称之为“元框架”更恰当。它允许您使用任何前端Web框架(比如React或Svelte),并将其转换成跨平台的富客户端。
Tauri联合创始人Denjell透露了开发一种新桌面框架的动机:
Tauri旨在简化构建应用程序的过程。因此如果有人对构建应用程序感兴趣,可能会接触到Tauri。首先,Tauri为mac、windows和linux构建应用程序。今年夏天,我们将发布2.0稳定版,新增支持IOS和Android/ target=_blank class=infotextkey>安卓的功能。
Tauri的开发过程非常有意思。该框架让您可以用当前使用的现有管道来构建,比如用Vite构建的SvelteKit。Tauri可以处理最终针对JavaScript和html构建的任何堆栈。它在开发服务器上运行,为用户生成原生桌面客户端。
Denjell描述的开发过程如下所示:
· 使用Svelte、Solid.js、React和Vue等,启动开发服务器。
· 配置tauri.conf,以便在该端口监听。
· 启动Tauri开发窗口。
虽然Tauri的代码面向系统,并且用Rust构建,但开发人员与几乎都是用JavaScript编写的API进行交互。Tauri是一种引人注目的方法,为广大的JavaScript开发人员构建原生桌面应用程序。Tauri旨在兑现使用JavaScript进行多平台开发的承诺,不像旧框架试图取得类似的壮举,却最终未能实现。
tRPC是一种构建API的诱人方法,得到TypeScript的支持。虽然tRPC与GraphQL属于同一个技术家族,但不同之处在于它使前端代码和后端代码之间的交互实现自动化。它还具有来自TypeScript强制执行类型这种能力的超级功能。
我询问tRPC的开发者Alex Johansson为什么开发tRPC,他回答如下:
我是GraphQL的忠实粉丝,现在仍然是,但是当我构建自己的产品时,经常觉得它阻碍了我——我在前后端都使用TypeScript。为什么我就不能直接使用这种语言本身,而不是引入外部模式?
tRPC的超级功能在于使用现有的技术跨整个堆栈支持各种类型的执行和关联。它提供了一种双向类型推断,并且无需元数据中介或额外的构建步骤将API定义绑定到消费代码。当我领悟到tRPC的性质后,就觉得它很简洁,真乃天才之作。
这里是tRPC团队使用StackBlitz构建的一个全栈React应用程序(https://stackblitz.com/edit/trpc-trpc-k6dpz1)。tRPC提供了端点,整个系统非常简单,只需要少量文件。简单就是美。
在StackBlitz示例中,公开的端点驱动IDE拥有的可用信息。比如在前端,使用自定义tRPC useQuery钩子填充result变量,就像这样:const result = trpc.greeting.useQuery({ name: 'client' });。在后端,这由tRPC路由来处理。
然后前端可以使用变量,就像这样:{result.data.text}。IDE(和TypeScript编译步骤)完全了解并能够提供result.data的类型定义。同样,tRPC路由端点知道前端,比如查询中提供的参数。
总的来说,tRPC是构建全栈TypeScript应用程序的一种独特而诱人的方法。它引起了开发者社区越来越大的兴趣,撰写本文时Github上已有近20000颗星。
Bun.js是JavaScript领域一颗冉冉升起的新星,因为它在一个软件包中处理多个方面。我询问框架的创建者Jarred Sumner关于其创建Bun的动机和希望:
Bun集JavaScript/TypeScript打包器、编译器、NPM软件包管理器和JavaScript运行时环境于一体。我们希望让JavaScript运行起来更快速、编写起来更简单。做到这方面的一个重要部分是生态系统兼容性。Bun旨在成为Node.js的简易替代者。人们不应该为了使用Bun而非得重写代码。许多Node.js API被做入到Bun中(不过这方面我们仍在努力),比如Node的原生模块API(NAPI):fs、path和process等。
Bun既是Node.js和Deno等运行时环境的简易替代者,也是webpack、Vite和Babel等辅助工具的替代者。它以其惊人的速度运行bun install(以替代npm install或yarn install)而迅速成名。Bun的性能优势来自于将大量代码从JavaScript中移到较低级的Zig和C++中。
Bun的快速处理以及一体化方法使其成为一种引人注目的方案,可以替代面向后端服务器端JavaScript的传统堆栈。开发人员也注意到了这点,迄今为止他们在GitHub上给该框架打了40000颗星。
如果您把TypeScript和CoffeeScript中的一些想法结合起来,再加入一些额外的优点,会得到什么?您会得到像Civet这样的框架,这个框架旨在使编写的TypeScript代码更简单、更强大。
Civet的创建者Daniel Moore特别指出:“坊间盛传Civet是新的CoffeeScript,不过也许这是好事。CoffeeScript为官方JavaScript规范带来了类、解构、async/awAIt、箭头函数和rest参数等要素。”
值得关注的是,Civet并不局限于改进TypeScript,它还使用JSX。正如Erik Demaine(负责大部分JSX改进之处的项目开发人员)指出:
Civet进一步完善了这些想法,添加了更迫切需要的语言特性(比如管道操作符、许多JSX改进之处以及很快推出的模式匹配switch),并在TypeScript的基础上构建(面向TypeScript编译),因此它与现有工具极其兼容。
在代码片段1中,您可以看到Civet实际运行的例子(来自Civet说明文档)。
代码片段1:简单的Civet例子
// Civet syntax
i .= 0
loop
i++
break if i > 5
// TS output
let i = 0;
while (true) {
i++;
if (i > 5) {
break;
}
}
别忘了Civet还可以处理JSX!我总是觉得JSX中的循环语法很笨拙,但是Civet简化了它。欲了解更多信息,可以参阅Civet速查表:
https://civet.dev/cheatsheet。
我不得不承认我对游戏机和shell的喜爱由来已久。自从我发现Commodore 64游戏背后的奥妙后就喜欢上了,我可以把BASIC代码输出到游戏机上。Tabby是一个功能齐全、跨平台的窗口终端,取代诸如cmd、powershell和Terminal之类的原生应用程序。它还可以像Putty那样处理SSH、像WinSCP那样处理SFTP。
我询问Tabby的创建者Eugeny关于创建一个新的终端应用程序的决定。
我起初创建[Tabby]是由于对使用Hyper(另一个基于Electron的Terminal应用程序)颇为沮丧,以及对其他应用程序停留在90年代普遍感到失望。另一个灵感来源是VS Code这个应用程序以更好的整体体验之名抛弃了约定。我希望发展壮大社区,最终重写[Tabby]以便使用Tauri而不是Electron,以缩减应用程序代码量并提高性能。
Tabby在跨环境保持一致的平台中为您提供了颜色、特殊键处理和复制/粘贴等方面所有好的细节。
访问Pixijs.com,观察将指针移到背景图像上的效果。有一种看起来很耗费计算资源的流体效果,但它似乎对性能没有巨大影响。他们是怎么做到的?当然是使用Pixi.js库!
Pixi为您提供了一套注重性能的高级API,用于使用WebGL和HTML5 Canvas构建接口。Pixi问世已有一段时间,它是一个成熟稳定的库。您可以在这里找到NPM软件包:https://www.npmjs.com/package/pixi.js?activeTab=readme。
虽然Pixi.js似乎为浏览器内游戏量身定做,但它在任何需要性能密集型图形的地方都很有用,包括图表和酷炫的效果。记住它是为2D而生的,不是为3D而生的。
如果与Tauri等框架结合使用,Pixi可以用于构建桌面平台等。您可以在Pixi在线游乐场(https://www.pixiplayground.com/#/edit)体验一番Pixi。
严格地说,PM2并不是一个JavaScript库,而是一种用JavaScript构建的面向系统的工具。这个非常完整的应用程序监测工具可以用来从命令行执行复杂的进程监测和管理工作。
Unix拥有监测和管理工具,比如bg/fg、nohup和screen,但PM2在一个易于使用的软件包中可全部完成所有这些工作。
PM2有几个重启策略来处理几乎任何情形。比如包括基于CRON时间来启动、停止时自动重启以及达到某个条件(如内存消耗)时启动。它包括一个——watch标志,用于文件更改时重新启动。
如果您需要一款满足各种Node.js进程管理需要的工具,PM2值得考虑。
原文链接:https://www.infoworld.com/article/3687616/7-awesome-javascript-projects-to-check-out-today.html