suchen
HeimWeb-FrontendCSS-TutorialErstellen einer serverlosen Full-Stack-Anwendung mit Cloudflare-Mitarbeitern

Erstellen einer serverlosen Full-Stack-Anwendung mit Cloudflare-Mitarbeitern

Serverless Computing hat die Softwareentwicklung revolutioniert, die Bereitstellung und DevOps vereinfacht. Dieses Tutorial zeigt, dass das Erstellen einer serverlosen Full-Stack-Anwendung mit CloudFlare-Mitarbeitern erstellt wird, eine Plattform, die Skalierung und Infrastruktur abstrahiert. Das Projekt "Repo Hunt" ist eine tägliche Rangliste für Open-Source-Projekte, die von Produktjagd und Reddit inspiriert ist. Die fertige Website ist hier verfügbar.

CloudFlare-Mitarbeiter, die das globale Netzwerk von Cloudflares nutzen, bietet unabhängig vom Benutzerstandort extrem niedrige Latenzleistung. Das Wrangler CLI -Tool vereinfacht das Erstellen, Hochladen und Veröffentlichen. In diesem Tutorial wird die "Router" -Stemplate verwendet, wodurch URL-basierte Routing ermöglicht wird. Der Quellcode ist auf Github [Link-to-Github-Repo] verfügbar.

Einrichten Ihrer Umgebung

Wrangler installieren:

 npm install -g @cloudflare/wrangler

Erstellen Sie ein neues Projekt mit der Router -Vorlage:

 wrangler generieren repo-hunt https://github.com/cloudflare/worker-template-router
CD Repo-Jagd

Die Router -Vorlage verwendet Webpack, wodurch die NPM -Module einbezogen werden können. Eine Router -Klasse übernimmt URL -Routing. Ein grundlegendes Beispiel:

 // index.js
const router = fordert ('./router');

AddEventListener ('Fetch', Ereignis => {
  Event.respectorwith (Handlrequest (Ereignis.Request));
});

Async -Funktion Handlersquest (Anfrage) {
  versuchen {
    const r = neuer Router ();
    R.Get ('/', () => Neue Antwort ("Hallo, Welt!"));
    const resp = warte R.Route (Anfrage);
    Rückkehr resp;
  } catch (err) {
    Neue Antwort zurückgeben (err);
  }
}

Die Arbeitnehmer reagieren auf fetch und geben eine Response zurück. In diesem Tutorial wird Routen für die Homepage ( / ), ein Einreichungsformular ( /post ) und die Einführung ( /repo ) ( /post) verwendet.

Routing und Vorlagen

Die Strecke der Homepage ( / ) macht eine Liste der eingereichten Repositorys. Wir beginnen mit einer einfachen HTML -Antwort:

 // index.js
const router = fordert ('./router');
const index = require ('./ Handler/Index');

// ... (Rest von index.js)

// Handler/Index.js
const headers = {'content-type': 'text/html'};
const handler = () => {
  Neue Antwort zurückgeben ("Hallo, Welt!", {Header});
};
module.exports = Handler;

Verwenden Sie wrangler preview um zu testen. Als nächstes werden wir eine komplexere Vorlage erstellen:

 // Handler/Index.js
const headers = {'content-type': 'text/html'};
const template = require ('../ semplates/index');

// ... (Rest von Handlern/Index.js)

// Vorlagen/index.js
const layout = fordert ('./ Layout');
const template = () => layout (`<h1 id="Hallo-Welt"> Hallo Welt!</h1> `);
module.exports = template;

// Vorlagen/layout.js
const layout = body => ` $ {Body} `;
module.exports = layout;

Dies verwendet eine Layout -Vorlage für ein konsistentes Styling (Bulma CSS ist enthalten).

Datenpersistenz mit Arbeitern KV

Die Arbeiter KV bieten einen Schlüsselwertgeschäft für Datenpersistenz. Wir speichern Repositories (Schlüssel: repos:${id} ) und tägliche Listen (Schlüssel: $date ). Hinweis: Die Arbeiter KV benötigen einen bezahlten Plan.

Grundlegende KV -Operationen:

 Repo_hunt.put ("mystring", "Hallo, Welt!"); // Einstellen eines Wertes
const string = warte repo_hunt.get ("mystring"); // einen Wert abrufen

Wir erstellen Klassen zum Verwalten von Repo- und Tagesdaten:

 // store/repo.js
const uUid = fordert ('uUid/v4');

Klasse Repo {
  // ... (Implementierung der Repo -Klasse)
}
module.exports = repo;

// store/day.js
const heute = () => neues Datum (). TolocaledateString ();

module.exports = {
  Hinzufügen: asynchrische Funktion (id) {// ...},
  getRepos: async function () {// ...}
};

Die Repo -Klasse übernimmt die Validierung und Beharrlichkeit. Day verwaltet tägliche Repository -Listen.

Umgang mit Benutzern

Mit einem Formular (GET /post ) können Benutzer Repositorys einreichen. Ein Post /repo -Handler verarbeitet Einsendungen:

 // Handler/create.js
const qs = fordert ('qs');
const repo = fordert ('../ store/repo');
const Day = fordert ('../ store/tag');

// ... (Erstellen Sie Handler -Implementierung)

Dadurch wird die qs -Bibliothek verwendet, um Formendaten zu analysieren, ein Repo -Objekt zu erstellen, es für KV zu speichern und seine ID zur täglichen Liste hinzugefügt.

Daten zur Homepage rendern

Die Homepage ruft nun Repository -Daten ab und rendert sie auf:

 // Handler/Index.js
// ... (aktualisierter Indexhandler)

// Vorlagen/index.js
// ... (Aktualisierte Vorlagenfunktion, um Repos zu rendern)

Die getRepos -Funktion des Day holt und sofort Repo -Objekte. Die Vorlage macht jedes Repository.

Einsatz

Beanspruchen eine Arbeiter.dev Subdomain:

 Wrangler Subdomain My-Subdomain

Bereitstellung der Anwendung:

 Wrangler Publish

Erstellen Sie einen KV -Namespace im CloudFlare -Dashboard und aktualisieren Sie wrangler.toml mit der Namespace -ID:

 [[KV-NamesPaces]]
binding = "repo_hunt"
id = "$ yournameSpacId"

Veröffentlichen Sie nach dem Hinzufügen des KV -Namespace zu wrangler.toml . Die Anwendung ist jetzt live!

Weiterentwicklung

Dieses Tutorial bietet eine Grundlage für eine serverlose Anwendung. Zukünftige Verbesserungen könnten Upvoting, Kommentare und ausgefeiltere Funktionen umfassen. Entdecken Sie die Dokumentation und die Vorlagengalerie der Arbeiter für weitere Entwicklungsideen.

Das obige ist der detaillierte Inhalt vonErstellen einer serverlosen Full-Stack-Anwendung mit Cloudflare-Mitarbeitern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Nächstes Level CSS -Styling für CursorNächstes Level CSS -Styling für CursorApr 23, 2025 am 11:04 AM

Benutzerdefinierte Cursoren mit CSS sind großartig, aber wir können die Dinge mit JavaScript auf die nächste Stufe bringen. Mit JavaScript können wir zwischen Cursorzuständen wechseln, dynamischen Text in den Cursor platzieren, komplexe Animationen anwenden und Filter anwenden.

Worlds Collide: Keyframe -Kollisionserkennung mit Style -AbfragenWorlds Collide: Keyframe -Kollisionserkennung mit Style -AbfragenApr 23, 2025 am 10:42 AM

Interaktive CSS -Animationen mit Elementen, die sich gegenseitig abprallen, scheinen im Jahr 2025 plausibler zu sein. Obwohl es unnötig ist, eine Pong in CSS zu implementieren

Verwendung von CSS-Hintergrund-Filter für UI-EffekteVerwendung von CSS-Hintergrund-Filter für UI-EffekteApr 23, 2025 am 10:20 AM

Tipps und Tricks zur Verwendung der CSS Backdrop-Filter-Eigenschaft, um Benutzeroberflächen zu stylen. Sie lernen, wie Sie Hintergrundfilter zwischen mehreren Elementen schichten, und integrieren sie in andere grafische CSS -Effekte, um aufwändige Designs zu erstellen.

Lächeln?Lächeln?Apr 23, 2025 am 09:57 AM

Nun, es stellt sich heraus, dass die integrierten Animationsfunktionen von SVG nie wie geplant veraltet waren. Sicher, CSS und JavaScript sind mehr als in der Lage, die Ladung zu tragen, aber es ist gut zu wissen, dass Smil nicht wie zuvor im Wasser tot ist

'Hübsch' ist im Auge des Betrachters'Hübsch' ist im Auge des BetrachtersApr 23, 2025 am 09:40 AM

Yay, let ' S sprung für Textschreiber: Pretty Landing in Safari Technology Preview! Aber achten Sie darauf, dass es sich von der Art und Weise unterscheidet, wie es in Chrombrowsern funktioniert.

CSS-Tricks Chronicles xliiiCSS-Tricks Chronicles xliiiApr 23, 2025 am 09:35 AM

Dieses CSS-Tricks-Update zeigt erhebliche Fortschritte im Almanac, den neuesten Podcast-Auftritten, einem neuen CSS-Leitfaden und der Hinzufügung mehrerer neuer Autoren, die wertvolle Inhalte beitragen.

Die @Apply -Funktion von Rückenwind ist besser als es klingtDie @Apply -Funktion von Rückenwind ist besser als es klingtApr 23, 2025 am 09:23 AM

Meistens präsentieren die Leute die @Apply-Funktion mit einer der einzelnen Properschafts-Dienstprogramme von Rückenwind (die eine einzelne CSS-Deklaration ändert). Wenn @Apply auf diese Weise präsentiert wird, klingt er überhaupt nicht vielversprechend. Also obvio

Ich habe das Gefühl, dass ich keine Veröffentlichung habe: eine Reise in Richtung vernünftiger BereitstellungenIch habe das Gefühl, dass ich keine Veröffentlichung habe: eine Reise in Richtung vernünftiger BereitstellungenApr 23, 2025 am 09:19 AM

Das Bereitstellen wie ein Idiot hängt von einer Missverhältnis zwischen den Tools, mit denen Sie zur Bereitstellung verwendet werden, und der Belohnung in der Komplexität im Vergleich zu Komplexität hinzu.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),