繁体   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