首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SvelteKit、Next.js和Nuxt.js代码在哪里运行?您能在这些框架中编写http请求处理程序吗?

问SvelteKit、Next.js和Nuxt.js代码在哪里运行?您能在这些框架中编写http请求处理程序吗?
EN

Stack Overflow用户
提问于 2022-08-05 10:33:41
回答 1查看 462关注 0票数 2

我已经在我自己的个人项目中随意使用了SvelteKit一段时间了。我过去也使用过其他框架,如Next.js和Nuxt.js。在我正在编写的代码实际运行的这些框架中工作时,我总是感到困惑。

对于我日常工作中的一些上下文,我使用ASP.NET核心平台创建更传统的web应用程序。

在ASP.NET中,我清楚地知道我编写的代码在哪里运行。我用Razor页面编写前端标记(只是编写html的一种方式,但在其中注入C#表达式)。当浏览器请求从服务器查看页面时,服务器获取页面和它需要的任何数据,从Razor页面标记生成html,并将其发送回浏览器,将其呈现到一个漂亮的网页中--我也可以在同一个应用程序中编写http处理程序,该处理程序可以侦听表单提交并通过ORM与数据库交互。

然而,在JavaScript框架(如SvelteKit、Next.js或Nuxt.js )中,这个过程总是让我感到困惑。我知道每个框架都以某种方式使用各自的组件框架(Svelte、React和Vue)。我还了解到,每个框架都增加了基于文件的路由功能,这样src代码映射中特定位置的文件就可以在浏览器中特定路由。例如,在SvelteKit中,您可以在src/routes/myAmazingPage.svelte上有一个svelte文件,当浏览器浏览到https://wherevertheappishosted.com/myAmazingPage时,该文件会在其中呈现。

然而,这是我的理解变得有点模糊。当您在SvelteKit中的页面之间浏览时,它不会导致浏览器中的页面重新加载。这告诉我,框架正在使用某种类型的客户端路由来处理这种行为,因为页面顶部的url和页面内容会发生变化,而不会导致页面重新加载。也没有向服务器发送任何网络请求来从某个url获取页面,这告诉我,所有数据获取必须在组件挂载上或在其他生命周期挂钩中在JavaScript中完成。

因此,我的问题是,在这种情况下,如果每个页面请求都没有发送http请求(即,当您导航到另一个页面时)到服务器,那么我用SvelteKit编写的代码在哪里真正运行呢?我用SvelteKit编写的所有代码是否都在初始页面加载时编译并发送到浏览器,然后全部在浏览器中运行?包括我编写的代码,以便在生命周期方法(如onMount() )中获取数据。

另外,如果这是真的,那么这些框架是否在后台运行了任何类型的http服务器来处理任何其他web请求?例如,我是否可以用svelte工具包编写一个http处理程序来处理表单提交的post请求,以便将数据保存到数据库中?这就是我在ASP.NET中处理表单提交的方式,我一直在想,在SvelteKit、Next.js或Nuxt.js中是否可以这样做。我过去使用过的唯一替代方法是编写一个用node.js编写的单独的http服务器,并使用它来处理与数据库和其他操作的通信,我将来自SvelteKit应用程序的所有请求发送到该服务器。

对于更有经验的JavaScript框架开发人员来说,这可能是一个明显的问题,但是由于每天都在ASP.NET这样的传统MVC框架中工作,所以这个话题总是让我感到困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-05 10:44:52

SvelteKit应用程序可以以很少不同的方式部署到生产中。

  • 在开发模式下,请求处理程序由Vite开发服务器运行。
  • 在静态生产部署模式中,没有请求处理程序,后端也没有运行-访问者只从服务器下载HTML、CSS和JS文件。
  • 在服务器端呈现模式下,请求由SvelteKit节点适配器(Node.js进程)运行.适配器还允许编写静态部署模式中不可用的服务器端请求处理程序。

Next.js和Nuxt.js各自在Node.js V8虚拟机上用JavaScript编写了自己的web服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73248377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档