譯者 | 布加迪
審校 | 孫淑娟
本文介紹您可能還不知道的7個JAVAScript新項目。這些工具和框架涵蓋一系列廣泛的功能,預示著JavaScript開發領域的新趨勢,比如原生應用程序創建、強類型全棧開發、Node.js運行時環境的簡易替代者和瀏覽器內圖形等。目前,所有項目都受到開發者的追捧,不會長期無人注意。
1.Tauri:面向桌面應用程序的JavaScript框架
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進行多平臺開發的承諾,不像舊框架試圖取得類似的壯舉,卻最終未能實現。
2.tRPC:用TypeScript從事API開發
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顆星。
3.Bun.js:一種面向JavaScript的更快運行時環境
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顆星。
4.Civet:面向TypeScript的現代框架
如果您把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。??
5.Tabby: 面向Node.js的終端
我不得不承認我對游戲機和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在跨環境保持一致的平臺中為您提供了顏色、特殊鍵處理和復制/粘貼等方面所有好的細節。
6.Pixi.js:JavaScript中的性能密集型圖形
訪問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。
7.PM2:用于Node.js的應用程序監控
嚴格地說,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