Build-Einrichtung
Wählen Sie zuerst das Framework Ihrer Anwendung und konfigurieren Sie anschließend das Buildwerkzeug für die iOS-, Android- oder Capacitor-Integration. Die Framework-Anleitung bestimmt Worker-Einstiegspunkt und Ausführungsgrenze; das Werkzeug-Plugin verbindet diesen Einstiegspunkt mit der mobilen App. Halten Sie den bestehenden Cloudflare-Build getrennt.
Verwenden Sie für den mobilen Build eine separate Konfiguration und ein separates Ausgabeverzeichnis. Das Plugin liest Server-Einstiegspunkt und Deployment-Konfiguration und erzeugt eine mobile Kopie, ohne diese Eingaben umzuschreiben. Vite weist SSR-/Serverumgebungen und Konfigurationen mit dem Cloudflare-Vite-Plugin zurück. Beide Builder weisen Ausgabeverzeichnisse mit bekannten Servereingaben zurück; bestehende Links darin werden abgewiesen, um Schreibzugriffe durch sie zu verhindern. Verwenden Sie kein beliebiges Cloudflare-Deployment-Verzeichnis als mobile Ausgabe: Das Plugin kann nicht jedes eigene Buildverzeichnis erkennen. Die OpenNext-Routenkompilierung verwendet ein temporäres Verzeichnis in node_modules/.cache/workers-capacitor/opennext, außerhalb von .next und .open-next.
Diese Buildgrenzen erhalten das bestehende Cloudflare-Deployment. Explizite Cliententscheidungen wie lokale Ausführung, Remote-Origin und getToken steuern weiterhin, welche Anfragen es erreichen und wie sich der Client authentifiziert; sie ändern weder Serverrouten noch Autorisierungslogik oder Bindings.
Laufzeiteinstiegspunkt wählen
Das Bundler-Plugin heißt bei jedem Host weiterhin workersCapacitorPlugin. Nur der Laufzeitimport der Anwendung ändert sich; Worker-Quellcode und Ausführungsoptionen werden gemeinsam verwendet.
| Host | Laufzeitimport | Native Einrichtung |
|---|---|---|
| iOS | workersIOS aus cf-workers-native/ios |
UIKit / SwiftUI |
| Android | workersAndroid aus cf-workers-native/android |
Bestehende Android-App |
| Capacitor | workersCapacitor aus cf-workers-native/capacitor |
Capacitor-App |
Verwenden Sie cf-workers-native@0.1.2 mit passenden nativen Abhängigkeiten; siehe Abhängigkeiten einrichten. Erstellen Sie für jedes Ziel den entsprechenden Einstiegspunkt und verpacken Sie anschließend das gesamte Ausgabeverzeichnis. Die folgenden bestehenden Capacitor-Beispiele verwenden workersCapacitor; dieselben Optionen gelten für workersIOS und workersAndroid in ihren SDK-Hosts.
Frameworks
Für die folgenden Integrationen liegen Beispiele und Verifizierungsnachweise vor. Die Unterstützung beschränkt sich auf die hier beschriebenen Ausführungspfade; API- und Anwendungseinschränkungen finden Sie unter Kompatibilitätsgrenzen.
| Framework | Ausführung und verifizierter Umfang | Einrichtung |
|---|---|---|
| Hono | Lokale Fetch-Handler und HTML-Seiten; Routing, Formulare und Anfrage-/Antwortverhalten werden in den Hono-Fixtures geprüft. Cloudabhängige Anfragen verwenden Remote-Dispatch. | Hono-Einstiegspunkt, Beispiel für natives Rendering |
| Workers Express | Lokale Ausführung über cloudflare:node; Fixtures für API und HTML-Rendering. Cloudabhängige Anfragen verwenden Remote-Dispatch. |
Workers-Express-Einstiegspunkt, Beispiel für natives Rendering |
| Void React Pages | SSR, Loader und Aktionen auf dem Remote-Worker; Client-Hydration und Formulare in der WebView. Verwenden Sie Void / @void/react 1.1.12 oder neuer; veröffentlichte 1.1.12-Pakete bestehen die Abnahme auf iOS-Simulator und Android-Emulator. | Void-Einrichtung und Verifikation |
| Next.js / OpenNext | Netzwerkausführung ist Standard. Unterstützte generierte Builds können statische GET-Routen lokal auswählen und D1, Middleware sowie Next-Protokollanfragen remote belassen; beachten Sie Versions- und Konfigurationsgrenzen. | OpenNext-Einrichtung und Grenzen |
Hono
Binden Sie den vorhandenen Fetch Handler der Anwendung ein. Zum Beispiel:
import { Hono } from "hono";
const app = new Hono();
app.get("/", (c) => c.html("<h1>Hello from Hono</h1>"));
app.get("/api/hello", (c) => c.json({ hello: "world" }));
export default app;
Richten Sie die Option worker des Vite- oder esbuild-Plugins auf diesen Einstiegspunkt. Verwenden Sie render: "/" für Seiten des Workers oder lassen Sie render weg, wenn Sie ein vorhandenes Frontend mit der API verbinden. Folgen Sie der Anleitung zur Anwendungsintegration für Capacitor-Einrichtung, Cloud-Bindings und Authentifizierung.
Beginnen Sie mit dem Standard execution: "network" und setzen Sie baseURL auf die HTTPS-URL des bereitgestellten Workers. Remote-Anfragen verwenden deren Origin, sofern Sie nicht ausdrücklich einen anderen bereitgestellten Origin unter remote.origin angeben. Um ausgewählte Implementierungen auf dem Gerät ausliefern zu dürfen, setzen Sie execution auf ein Routenarray. Hono-Pfade wie /app/* werden unterstützt. Die Erlaubnis umfasst beibehaltene Abhängigkeitsdaten und hebt erkannte Servergrenzen nicht auf. Siehe lokale Routenauswahl.
Workers Express
Das Beispiel verwendet das echte Paket express und den Workers-Einstiegsstil:
import express from "express";
import { httpServerHandler } from "cloudflare:node";
const app = express();
app.use(express.json());
app.get("/api/hello", (_req, res) => res.json({ hello: "world" }));
app.listen(3000);
export default httpServerHandler({ port: 3000 });
Verwenden Sie das Vite- oder esbuild-Plugin ausschließlich im mobilen/Browser-Build, niemals im Cloudflare-Build. Es liefert Workers-kompatible Adapter für node:http und node:net neben Browser-Polyfills; das Kompatibilitätsverzeichnis dokumentiert verifizierte Basis und Module. listen(3000) registriert einen Handler im Speicher, keinen lauschenden TCP-Port. Das Plugin unterstützt Hono und Workers Express; Framework-Code bleibt unverändert.
Der Standard execution: "network" belässt den Worker vollständig remote. Setzen Sie baseURL in workersCapacitor() auf die HTTPS-URL des bereitgestellten Workers; setzen Sie remote.origin nur, wenn der Remote-Origin vom Origin von baseURL abweichen muss. Ergänzen Sie für eine bewusst eigenständige Express-App execution: "local" in den folgenden Vite- oder esbuild-Plugin-Optionen. Dies erlaubt die Auslieferung der gesamten Worker-Implementierung und beibehaltener fester Daten auf das Gerät; verwenden Sie es nicht mit Servergeheimnissen. Konfigurierte Server-Bindings lassen local beim Build fehlschlagen. Siehe Ausführungsrichtlinien.
TypeScript-Typen
Das Paket stellt den Typ für cloudflare:node für seinen unterstützten Adapter httpServerHandler bereit. Fügen Sie ihn für einen Browser-Build ohne vorhandene Workers-Typdeklarationen zu compilerOptions.types in tsconfig.json hinzu:
{ "compilerOptions": { "types": ["cf-workers-native/cloudflare/apis/types"] } }
Behalten Sie alle anderen bereits verwendeten Typen bei. Dieser Einstiegspunkt dient nur der Typisierung; importieren Sie ihn nicht zur Laufzeit. Projekte mit generierten Workers-Typen sollten stattdessen diese Deklarationen behalten. Eine anwendungseigene cloudflare.d.ts oder client.d.ts ist nicht erforderlich.
Angular auf Workers
Diese Integration ist noch nicht verifiziert. Das Ziel ist eine bestehende Angular-SSR-Anwendung, die auf Cloudflare Workers bereitgestellt ist und deren Rendering, Routing und Hydration bei der Übernahme in Capacitor erhalten bleiben. Eine dedizierte Konfiguration des Worker-Einstiegspunkts und ein Abnahmebeispiel sind noch erforderlich, bevor sie als unterstützt aufgeführt werden kann.
Die Unterstützung von Vite oder esbuild allein weist keine Angular-SSR-Unterstützung nach. Die reine Fetch-Integration eines separaten Frontends ist ein anderer Anwendungsfall.
Werkzeuge
Diese Versionen beschreiben den separaten mobilen Build. Der bestehende Cloud-Build eines Frameworks kann ein anderes Werkzeug oder eine andere Version verwenden; lassen Sie ihn unverändert und verbinden Sie seinen generierten Worker gemäß der Framework-Anleitung.
| Build | Einrichtung | Eingabe |
|---|---|---|
| Vite 7 | Plugin cf-workers-native/tooling/vite |
TypeScript-/JavaScript-Worker-Einstiegspunkte, einschließlich der oben beschriebenen Framework-Ausgabe |
| esbuild 0.28 | Plugin cf-workers-native/tooling/esbuild |
TypeScript-/JavaScript-Worker-Einstiegspunkte, einschließlich der oben beschriebenen Framework-Ausgabe |
| Browser ES Modules | Expliziter Worker-Quellcode unten | Nur browserkompatibles JavaScript |
Andere Bundler werden derzeit nicht unterstützt. Fügen Sie diese Plugins ausschließlich dem mobilen/Browser-Build hinzu, niemals dem Cloudflare-Build.
Vite
Fügen Sie das Plugin zur mobilen/Browser-Vite-Konfiguration hinzu:
import { defineConfig } from "vite";
import { workersCapacitorPlugin } from "cf-workers-native/tooling/vite";
export default defineConfig({
plugins: [workersCapacitorPlugin({ worker: "./src/worker.ts" })],
});
src/worker.ts ist der vorhandene Anwendungseinstiegspunkt, der einen Fetch Handler exportiert (zum Beispiel Honos export default app), kein Transportmodul der Bibliothek. Der Pfad worker des Plugins ist relativ zum Vite-Stammverzeichnis (absolute Pfade funktionieren ebenfalls). Das Plugin verbindet diesen Einstiegspunkt mit dem normalen Paketimport; im Anwendungscode ist weder ein spezieller Import noch eine generierte Quelldatei nötig.
esbuild
Verwenden Sie für esbuild denselben Anwendungscode mit dieser Build-Konfiguration:
import { build } from "esbuild";
import { workersCapacitorPlugin } from "cf-workers-native/tooling/esbuild";
await build({
entryPoints: ["src/main.ts"],
outdir: "www",
bundle: true,
format: "esm",
platform: "browser",
plugins: [workersCapacitorPlugin({ worker: "./src/worker.ts" })],
});
Der Einstiegspfad ist relativ zu absWorkingDir (oder zum aktuellen Verzeichnis). Stellen Sie das gesamte Ausgabeverzeichnis bereit, einschließlich erzeugter Worker-Assets und verzögert geladener direkter Module. Die Worker-Kompilierung verwendet die Kompatibilitätstransformationen des Plugins; zusätzliche Anwendungsplugins werden nicht auf das Worker-Bundle angewendet. Browser-ESM-Ausgabe mit outdir oder outfile ist erforderlich. Worker-Einstiegspunkte müssen in eine einzelne JavaScript-Datei gebündelt werden; separate CSS-/Datei-Assets werden nicht unterstützt.
Browser ES Modules (ohne Bundler)
Dieser Weg dient der reinen Fetch-Integration und bereitet native Dokument-Assets nicht automatisch vor. Kopieren Sie ohne Bundler das Verzeichnis dist des Pakets in Ihr öffentliches Verzeichnis lib und verwenden Sie gewöhnliche relative ES-Module-Importe:
// main.js (geladen mit <script type="module">)
import { workersCapacitor } from "./lib/index.js";
const runtime = workersCapacitor({
baseURL: "https://api.example.com/api/",
worker: {
createWorker: () =>
new Worker(new URL("./worker-entry.js", import.meta.url), {
type: "module",
}),
loadDirect: async () => (await import("./worker.js")).default,
},
});
await runtime.ready;
// worker-entry.js
import { serve } from "./lib/browser/isolated/transport.js";
import worker from "./worker.js";
serve(worker);
worker.js exportiert den vorhandenen Fetch Handler. Alle seine Abhängigkeiten müssen ebenfalls browserkompatible ES Modules mit auflösbaren URLs sein. Dieser Weg transformiert weder TypeScript, bloße npm-Importe, Node-APIs noch cloudflare:*-Importe. Das öffentliche gebündelte Gegenstück zu lib/browser/isolated/transport.js ist cf-workers-native/browser/isolated.