自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快的離譜! 新的 JS 運行時 WinterJS 來了!每秒 150k 請求,速度超過 Bun、Node.js

開發(fā) 前端
努力使 React 服務器組件完全可用有助于我們發(fā)現(xiàn)我們的流實現(xiàn)與規(guī)范存在一些細微但重要的差異。我們還意識到我們的獲取實現(xiàn)有一些怪癖需要修復,但最終,在經(jīng)過許多汗水和不眠之夜后,我們完全做到了!

WinterJS 1.0 終于發(fā)布了!

WinterJS 是一個使用 Rust 編寫的、與 WinterCG 兼容的 JavaScript 運行時,使用 SpiderMonkey 引擎執(zhí)行 JavaScript,并使用 Tokio 處理底層的 HTTP 請求和 JS 事件循環(huán)。WinterJS 運行時還可以編譯為 WebAssembly,并且因此是第一個完全可在 Wasmer Edge 中運行的生產(chǎn)級運行時。

以下是我們在 WinterJS 1.0 中取得的成就,距離我們的首次公告僅過了四個月:

  • 飛快的速度(比 Bun、WorkerD 和 Node 更快!)
  • WinterJS 現(xiàn)在完全兼容* WinterCG 規(guī)范
  • Cloudflare API 兼容性
  • Web 框架支持:Next.js(支持 React 服務器組件?。?、Hono、Astro、SvelteKit 等

現(xiàn)在,讓我們更詳細地了解每個特性!

飛快的速度

WinterJS 1.0 在本地執(zhí)行時能夠處理 150,000 個請求/秒(使用 WASIX 編譯為 Wasm 后為 20,000 個請求/秒)。

截至今日,WinterJS 比 Bun(117,000 請求/秒)、WorkerD(40,000 請求/秒)和 Node(75,000 請求/秒)處理更多的請求/秒(請參見基準測試)。

圖片圖片

WinterCG 兼容性

WinterCG 是負責定義一組全局類和函數(shù)的機構(gòu)之一,這些類和函數(shù)需要存在才能在一組基礎架構(gòu)上正確運行工作負載。

自我們首次公告以來,我們已經(jīng)添加了對完整一套 API 的支持,包括:

  • Data fetching:fetch、URL、Request、Response
  • Files:Blob、File
  • Streams:ReadableStream、WritableStream、TransformStream*
  • Text Encoders:TextEncoder、TextEncoderStream、atob、btoa
  • Cryptography:crypto*

注意:變換流中的反壓和一些(非常見的)加密算法尚未實現(xiàn)。

Cloudflare API 兼容性

我們希望確保大多數(shù)前端框架在 WinterJS 中都能無縫運行,無需額外處理。因此,我們有兩個選擇:

  • 為每個前端框架創(chuàng)建全新的集成
  • 加入一個現(xiàn)有的提案

經(jīng)過對 Deno、Cloudflare 和 Fastly 適配器的深入分析,我們意識到最強大的選擇是 Cloudflare,因為它已經(jīng)支持了其他 API 框架的大部分功能,并且可能是最常用的。因此,我們決定采用 Cloudflare API 兼容性。

為了支持 Cloudflare Worker 的工作負載,我們著手解決了四個主要方面的問題:

  • 通過 import 語法支持 ES 模塊
  • 通過 Node.js 兼容性 API 支持
  • 通過node:async_hooks 支持 AsyncLocalStorage
  • 通過 _routes.json 支持調(diào)用路由
  • 支持文件系統(tǒng)結(jié)構(gòu)
_worker.js
index.html
mystaticimage.jpg
  • 支持 Cloudflare 的 WinterCG 自定義 fetch API
export default {
 async fetch(request, env, ctx) {
  return new Response('Hello World!');
 },
}

以及 env.ASSETS API,它允許通過 Rust 的超級優(yōu)化的靜態(tài) Web 服務器直接提供靜態(tài)資產(chǎn),因此您可以執(zhí)行:

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    if (url.pathname.startsWith('/api/')) {
      // TODO: Add your custom /api/* logic here.
      return new Response('Ok');
    }
    // Otherwise, serve the static assets.
    // Without this, the Worker will error and no assets will be served.
    return env.ASSETS.fetch(request);
  },
}
}

[請在此處查看完整的自定義 Cloudflare fetch API:](https://developers.cloudflare.com/workers/runtime-apis/handlers/fetch/)

在獲得所有這些功能之后,我們幾乎可以通過傳遞 --mode=cloudflare 來運行任何其他網(wǎng)絡框架。

winterjs --mode=cloudflare output/static
  # OR (using WASIX)
wasmer run wasmer/winterjs --net --mapdir=output/static:/web -- --mode=cloudflare /web

現(xiàn)有 Web 框架的兼容性

由于與 Cloudflare Workers API 的新兼容性,我們現(xiàn)在完全支持以下框架,不僅可以提供框架生成的靜態(tài)網(wǎng)站,還可以讓這些框架進行服務器端渲染(SSR):

  • Next.js(應用模板,演示)
  • Next.js React 服務器組件(應用模板,演示)- 注意:服務器端獲取緩存尚未實現(xiàn)
  • Hono(應用模板,演示)
  • Astro.build(應用模板,演示)
  • Remix.run(應用模板,演示)
  • Svelte(應用模板,演示)
  • Gatsby(應用模板,演示)
  • Nuxt(應用模板,演示)

支持 React 服務器組件

我們?nèi)〉玫淖罹咛魬?zhàn)性的成就之一是運行具有服務器組件支持的 Next.js 服務器,因此渲染可以完全在服務器端完成。

努力使 React 服務器組件完全可用有助于我們發(fā)現(xiàn)我們的流實現(xiàn)與規(guī)范存在一些細微但重要的差異。我們還意識到我們的獲取實現(xiàn)有一些怪癖需要修復,但最終,在經(jīng)過許多汗水和不眠之夜后,我們完全做到了!??

[您可以查看使用 React 服務器端組件的 Hacker News 演示:](https://next-rsc-hn.wasmer.app/)(請注意,在此演示中,我們沒有在服務器端緩存獲取結(jié)果,因此加載時間可能不是最快的)。

我們現(xiàn)在只差一小步就可以將我們的 Next.js 前端從 Vercel 遷移到 Wasmer Edge,成本更低,而且完全可以在本地重現(xiàn)。

即刻體驗 Wasmer Edge!選擇上述任一應用程序模板,在 Wasmer Edge 上部署您的第一個 WinterJS 應用程序,或按照 JS Worker 快速入門指南操作。

還有一個小細節(jié)… 我們正在準備在 Wasm 空間中完全運行 JIT 編譯的 JS 工作負載……敬請關(guān)注更多更新!

接下來是什么?WinterJS 1.0 只是開始。

在 Wasmer,我們正在開發(fā)一種新的邊緣部署應用程序的方式,通過嘗試邊緣技術(shù),為您的項目開啟令人難以置信的新用例。

作者 | Arshia Ghafoori

翻譯、整理 | 五月君

原文 https://wasmer.io/posts/winterjs-v1

責任編輯:武曉燕 來源: 編程界
相關(guān)推薦

2023-09-26 15:22:02

2023-09-12 17:38:41

2024-02-20 18:32:20

Node.jsJSJavaScrip

2023-09-27 16:52:13

2024-03-21 09:15:58

JS運行的JavaScrip

2023-10-09 08:39:30

Node.jsBun 1.0JavaScrip

2019-07-09 14:50:15

Node.js前端工具

2022-10-08 00:00:00

V8channel對象

2023-10-04 07:35:03

2023-09-09 10:18:51

2021-08-27 00:21:19

JSJust源碼

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js

2013-11-01 09:34:56

Node.js技術(shù)

2015-03-10 10:59:18

Node.js開發(fā)指南基礎介紹

2021-12-25 22:29:57

Node.js 微任務處理事件循環(huán)

2024-02-22 08:37:28

NodejsJavaScript運行

2021-07-09 00:24:10

No.jsNode.js原理

2021-07-10 07:39:38

Node.js C++V8

2011-11-02 09:04:15

Node.js
點贊
收藏

51CTO技術(shù)棧公眾號