← Cloudflare Workers / workers / framework-guides / web-apps
React Router (dříve Remix)
Začít z CLI: Vytvořte základ fullstack aplikace s React Router v8 ↗ a Cloudflare Vite plugin pro bleskově rychlý vývoj.
npm create cloudflare@latest -- my-react-router-app --framework=react-routerNebo jen nasaďte: Vytvořte fullstack aplikaci pomocí React Router v8, včetně předem nastaveného CI/CD a náhledů.
Co je React Router?
React Router v8 ↗ je full-stack framework React pro tvorbu webových aplikací. Kombinuje se s Cloudflare Vite plugin pro poskytnutí prvotřídního zážitku při vývoji, sestavování a nasazování vašich aplikací na Cloudflare.
Vytvoření full-stack aplikace React Router
-
Vytvořte nový projekt pomocí create-cloudflare CLI (C3)
npm create cloudflare@latest -- my-react-router-app --framework=react-routerJak je tento projekt nastaven?
Níže je zjednodušený strom souborů projektu.
- my-react-router-app
- app
- trasy
- ...
- entry.server.ts
- root.tsx
- routes.ts
- trasy
- workers
- app.ts
- react-router.config.ts
- vite.config.ts
- wrangler.jsonc
- app
react-router.config.tsje vaše Konfigurační soubor React Router ↗. V tomto souboru:ssrje nastaveno natrue, což znamená, že vaše aplikace bude používat vykreslování na straně serveru.
vite.config.tsje vaše Konfigurační soubor Vite ↗. Pluginy React Router a Cloudflare jsou součástípluginspole. Cloudflare Vite plugin spouští kód vašeho serveru v runtime Workers, díky čemuž je vaše lokální vývojové prostředí co nejblíže produkčnímu.wrangler.jsoncje vaše Konfigurační soubor Workeru. V tomto souboru:mainodkazuje na./workers/app.ts. Toto je vstupní soubor vašeho Workeru. Výchozí export obsahujefetchhandler, který deleguje požadavek na React Router.- Pokud chcete přidat vazby ke zdrojům na vývojářské platformě Cloudflare, konfigurujete je zde.
- my-react-router-app
-
Vývoj lokálně
Po vytvoření projektu spusťte v adresáři projektu následující příkaz, který spustí lokální vývojový server.
npm run devCo se děje při lokálním vývoji?
Tento projekt používá React Router v kombinaci s Cloudflare Vite plugin. Znamená to, že vaše aplikace běží v runtime Cloudflare Workers stejně jako v produkci a umožňuje přístup k lokálním emulacím vazeb.
-
Nasaďte svůj projekt
Váš projekt lze nasadit na
*.workers.devsubdoména nebo Custom Domain z vlastního počítače nebo z libovolného systému CI/CD, včetně toho od samotného Cloudflare Workers Builds.Následující příkaz sestaví a nasadí váš projekt. Pokud používáte CI, nezapomeňte aktualizovat "deploy command" konfiguraci podle potřeby.
npm run deploy
Použijte bindings s React Router
Díky bindings lze vaši aplikaci plně integrovat s Cloudflare Developer Platform a získat tak přístup k výpočetnímu výkonu, úložišti, AI a dalším službám.
Jakmile nakonfigurujete bindings v konfiguračním souboru Wrangleru, budou dostupné v context.cloudflare ve vašich funkcích loader nebo action:
export function loader({ context }: Route.LoaderArgs) {
return { message: context.cloudflare.env.VALUE_FROM_CLOUDFLARE };
}
export default function Home({ loaderData }: Route.ComponentProps) {
return <Welcome message={loaderData.message} />;
}Jelikož máte přímý přístup ke vstupnímu souboru Workeru (workers/app.ts), můžete také přidat další exporty, například Durable Objects a Workflows
Příklad: použití Workflows
Následující příklad ukazuje, jak nastavit jednoduchý Workflow ve vstupním souboru vašeho Workeru.
import { createRequestHandler } from "react-router";
import { WorkflowEntrypoint, type WorkflowStep, type WorkflowEvent } from 'cloudflare:workers';
declare global {
interface CloudflareEnvironment extends Env {}
}
type Env = {
MY_WORKFLOW: Workflow;
};
export class MyWorkflow extends WorkflowEntrypoint<Env> {
override async run(event: WorkflowEvent<{ hello: string }>, step: WorkflowStep) {
await step.do("first step", async () => {
return { output: "First step result" };
});
await step.sleep("sleep", "1 second");
await step.do("second step", async () => {
return { output: "Second step result" };
});
return "Workflow output";
}
}
const requestHandler = createRequestHandler(
() => import("virtual:react-router/server-build"),
import.meta.env.MODE
);
export default {
async fetch(request, env, ctx) {
return requestHandler(request, {
cloudflare: { env, ctx },
});
},
} satisfies ExportedHandler<CloudflareEnvironment>;Nakonfigurujte to v konfiguračním souboru Wrangleru:
{
"workflows": [
{
"name": "my-workflow",
"binding": "MY_WORKFLOW",
"class_name": "MyWorkflow"
}
]
}[[workflows]]
name = "my-workflow"
binding = "MY_WORKFLOW"
class_name = "MyWorkflow"A poté jej použijte ve své aplikaci:
export async function action({ context }: Route.ActionArgs) {
const env = context.cloudflare.env;
const instance = await env.MY_WORKFLOW.create({ params: { "hello": "world" } })
return { id: instance.id, details: await instance.status() };
}Díky bindings lze vaši aplikaci plně integrovat s Cloudflare Developer Platform a získat tak přístup k výpočetnímu výkonu, úložišti, AI a dalším službám.