簡體   English   中英

SvelteKit、Next.js 和 Nuxt.js 代碼在哪里運行? 你能在這些框架中編寫 http 請求處理程序嗎?

[英]Where does SvelteKit, Next.js and Nuxt.js code run? And can you write http request handlers in these frameworks?

在我自己的個人項目中,我一直在隨便使用 SvelteKit。 我過去也使用過其他框架,例如 Next.js 和 Nuxt.js。 在我正在編寫的代碼實際運行的這些框架中工作時,它總是讓我感到困惑。

在我的日常工作中,我使用 ASP.NET 核心平台來創建更傳統的 web 應用程序。

在 ASP.NET 中,我很清楚我編寫的代碼在哪里運行。 我在 Razor 頁面中編寫前端標記(只是編寫 html 但在內部注入 C# 表達式的一種方法)。 當瀏覽器向服務器請求要查看的頁面時,服務器獲取該頁面和它需要的任何數據,從 Razor 頁面標記生成 html 並將其發送回瀏覽器以將其呈現為漂亮的 Z2567A5EC9705EB7AC2C984033 中的頁面我可以編寫 http 處理程序,它可以監聽表單提交並通過 ORM 與數據庫交互。

在 SvelteKit、Next.js 或 Nuxt.js 等 JavaScript 框架中,但這個過程總是讓我感到困惑。 我知道每個框架都以某種方式在后台使用它們各自的組件框架(Svelte、React 和 Vue)。 我還了解每個框架都添加了基於文件的路由的功能,以便 src 代碼 map 中特定位置的文件到瀏覽器中的特定路由。 例如,在 SvelteKit 中,您可以在src/routes/myAmazingPage.svelte擁有一個 svelte 文件,當瀏覽器瀏覽到https://wherevertheappishosted.com/myAmazingPage時,該文件會被渲染。

然而,這是我的理解變得有點模糊的地方。 當您在 SvelteKit 中的頁面之間瀏覽時,它不會導致瀏覽器中的頁面重新加載。 這告訴我,該框架正在使用某種客戶端路由來處理此行為,因為頁面頂部的 url 並且頁面內容發生更改而不會導致頁面重新加載。 也沒有網絡請求被發送到服務器以獲取某個 url 的頁面,這告訴我所有數據獲取必須在 JavaScript 組件安裝或其他一些生命周期掛鈎中完成。

所以我的問題是在這種情況下,如果沒有 http 請求被發送到每個頁面請求(即當您導航到不同的頁面時)到服務器,那么我在 SvelteKit 中編寫的代碼實際運行在哪里? 是不是我在 SvelteKit 中編寫的所有代碼都在初始頁面加載時編譯並發送到瀏覽器,然后全部在瀏覽器中運行? 包括我編寫的用於在onMount()等生命周期方法中獲取數據的代碼。

此外,如果這是真的,那么這些框架是否有任何類型的 http 服務器在后台運行以處理任何其他 web 請求? 例如,我可以在 svelte 工具包中編寫一個 http 處理程序來處理來自表單提交的發布請求以將數據保存到數據庫嗎? That is the way I would go about handling form submissions in ASP.NET and I have always wondered if it is possible to do in SvelteKit, Next.js or Nuxt.js. 我過去使用的唯一替代方法是編寫一個單獨的 http 服務器,用 node.js 編寫並表示處理與數據庫和其他操作的通信,我將所有請求從我的 SvelteKit 應用程序發送到。

對於更有經驗的 JavaScript 框架開發人員來說,這可能是一個明顯的問題,但是由於每天都在像 ASP.NET 這樣更傳統的 MVC 框架中工作,所以這個主題總是讓我感到困惑。

感謝您閱讀我的第一個 Stack Overflow 問題,這是一個很長的問題,非常感謝您完成它。 祝你有美好的一天 !

SvelteKit 應用程序可以以幾種不同的方式部署到生產環境。

  • 在開發模式下,請求處理程序由Vite 開發服務器運行
  • 在 static 生產部署模式下,沒有請求處理程序,后端也不運行任何內容 - 訪問者只需從服務器下載 HTML、CSS 和 JS 文件
  • 在服務器端渲染 (SSR) 生產模式下,請求由SvelteKit 節點適配器(Node.js 進程)運行。 該適配器還允許編寫在 static 部署模式中不可用的服務器端請求處理程序。

Next.js and Nuxt.js have their respective own web servers written in JavaScript on the top of Node.js V8 virtual machine.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM