Fastly Compute
Fastly Compute ist ein fortschrittliches Edge-Computing-System, das deinen Code in deiner bevorzugten Sprache im globalen Edge-Netzwerk von Fastly ausführt. Hono funktioniert auch auf Fastly Compute.
Mit der Fastly-CLI kannst du die Anwendung lokal entwickeln und mit wenigen Befehlen veröffentlichen. Die CLI wird als Teil der Vorlage automatisch lokal installiert.
1. Einrichtung
Für Fastly Compute steht eine Projektvorlage zur Verfügung. Starte dein Projekt mit dem Befehl „create-hono“. Wähle für dieses Beispiel die Vorlage fastly aus.
npm create hono@latest my-appyarn create hono my-apppnpm create hono my-appbun create hono@latest my-appdeno init --npm hono my-appWechsle nach my-app und installiere die Abhängigkeiten.
cd my-app
npm icd my-app
yarncd my-app
pnpm icd my-app
bun i2. Hello World
Bearbeite src/index.ts:
// src/index.ts
import { Hono } from 'hono'
import { fire } from '@fastly/hono-fastly-compute'
const app = new Hono()
app.get('/', (c) => c.text('Hello Fastly!'))
fire(app)NOTE
Wenn du fire (oder buildFire()) aus @fastly/hono-fastly-compute' auf der obersten Ebene deiner Anwendung verwendest, eignet sich Hono aus 'hono' besser als aus 'hono/quick'. Denn fire veranlasst den Router, seine internen Daten bereits während der Initialisierung der Anwendung aufzubauen.
3. Ausführen
Starte den Entwicklungsserver lokal. Öffne anschließend http://localhost:7676 in deinem Webbrowser.
npm run startyarn startpnpm run startbun run start4. Bereitstellung
Um deine Anwendung zu bauen und in deinem Fastly-Konto bereitzustellen, führe den folgenden Befehl aus. Bei der ersten Bereitstellung wirst du aufgefordert, einen neuen Dienst in deinem Konto zu erstellen.
Wenn du noch kein Konto hast, musst du ein Fastly-Konto erstellen.
npm run deployyarn deploypnpm run deploybun run deployBindings
In Fastly Compute kannst du Fastly-Plattformressourcen wie KV Stores, Config Stores, Secret Stores, Backends, Zugriffssteuerungslisten, benannte Log-Streams und Umgebungsvariablen binden. Über c.env kannst du auf sie zugreifen; sie erhalten ihre jeweiligen SDK-Typen.
Um diese Bindings zu verwenden, importiere buildFire statt fire aus @fastly/hono-fastly-compute. Definiere deine Bindings und übergib sie an buildFire(), um fire zu erhalten. Verwende dann fire.Bindings, um beim Erstellen von Hono deinen Typ Env zu definieren.
// src/index.ts
import { buildFire } from '@fastly/hono-fastly-compute'
const fire = buildFire({
siteData: 'KVStore:site-data', // I have a KV Store named "site-data"
})
const app = new Hono<{ Bindings: typeof fire.Bindings }>()
app.put('/upload/:key', async (c, next) => {
// e.g., Access the KV Store
const key = c.req.param('key')
await c.env.siteData.put(key, c.req.body)
return c.text(`Put ${key} successfully!`)
})
fire(app)