Runtimes, Adapters, Templates, and Deployment
このコンテンツはまだ日本語訳がありません。
运行时、适配器、模板和部署
部署 Remix 应用程序分为四层:
- 像 Node.js 这样的 JavaScript 运行时
- 像 Express.js 这样的 JavaScript 网络服务器
- 像
@remix-run/express
这样的服务器适配器 - 网络主机或平台
根据您的网络主机,您的层数可能会更少。例如,部署到 Cloudflare Pages 可同时处理 2、3 和 4。在 Express 应用程序中部署 Remix 将处理所有四个层,而使用Remix App Server
可将 2 和 3 结合起来!
您可以自行连接所有这些,或者从 Remix 模板开始。
让我们谈谈每个部分的作用。
JavaScript 运行时
Remix 可以部署到任何 JavaScript 运行时,如 Node.js、Shopify Oxygen、Cloudflare Workers/Pages、Fastly Compute、Deno、Bun 等。
每个运行时对 Remix 所基于的标准 Web API 的支持各不相同,因此需要 Remix 运行时包来填充运行时所缺少的任何功能。这些填充包括 Web 标准 API,如请求、响应、加密等。这样,您就可以在服务器上使用与浏览器中相同的 API。
可用的运行时包如下:
您在应用中与之交互的大多数 API 并非直接从这些包中导入,因此您的代码在运行时之间具有相当好的可移植性。但是,偶尔您会从这些包中导入一些非标准 Web API 的特定功能。
例如,您可能希望将 Cookie 存储在文件系统或 Cloudflare KV 存储中。以下是运行时的特定功能,不会与其他运行时共享:
但是如果你将会话存储在 cookie 本身中,则所有运行时都支持此功能:
适配器
Remix 不是 HTTP 服务器,而是现有 HTTP 服务器内的处理程序。适配器允许 Remix 处理程序在 HTTP 服务器内运行。一些 JavaScript 运行时(尤其是 Node.js)有多种创建 HTTP 服务器的方法。例如,在 Node.js 中,您可以使用 Express.js、fastify 或原始http.createServer
。
这些服务器中的每一个都有自己的请求/响应 API。适配器的工作是将传入的请求转换为 Web Fetch 请求,运行 Remix 处理程序,然后将 Web Fetch 响应适配回主机服务器的响应 API。
下面是一些说明该流程的伪代码。
Remix 应用服务器
为了方便起见,Remix App Server 是一个基本的快速服务器,适用于新项目、修补或对 Express 等服务器没有任何特定需求并部署到 Node.js 环境的项目。
模板
Remix 的设计非常灵活,只需提供足够的意见即可将 UI 连接到后端,但不会对使用的数据库、缓存数据的方式或应用程序的部署位置和方式提出意见。
Remix 模板是应用程序开发的起点,其中包含了社区创建的所有这些额外的意见。
您可以在 Remix CLI 中使用带有 --template
标志的模板,该模板指向 GitHub 上的存储库:
您可以在模板指南中阅读有关模板的更多信息。
一旦您选择了模板或[从头开始设置应用程序][快速入门],您就可以开始构建您的应用程序了!