suchen
HeimWeb-Frontendjs-Tutorialminiframe-router: Router für Express.JS-Anwendungen

miniframe-router – ein minimalistischer Router für Express.JS-Anwendungen, inspiriert von Ruby on Rails. So habe ich es gemacht.

miniframe-router: Router for Express.JS Applications


Beispiel, wie Routing in einer einfachen Anwendung aussehen könnte.

// Root routes
root("index#home");

// Basic CRUD routes
get("/users", "users#index");
get("/users/:id", "users#show");
post("/users", "users#create");
post("/users/:id", "users#update");
post("/users/:id/destroy", "users#destroy");

// Posts routes with scope
scope("blog", () => {
  get("/posts", "posts#index");
  get("/posts/:id", "posts#show");
  post("/posts", "posts#create");
  post("/posts/:id", "posts#update");
  post("/posts/:id/destroy", "posts#destroy");
});

Kontext

Ich hatte seit etwa 10 Jahren keine NodeJS-Anwendungen mehr geschrieben. Neugierig auf Telegram Mini Apps, beschloss ich, ein paar einfache Projekte zu erstellen, um dieses neue Feld zu erkunden.

Dazu benötigte ich Routing für das Backend meiner Anwendungen. Bestehende Lösungen überzeugten mich nicht ganz, also beschloss ich, meinen eigenen Router zu entwickeln – einfach, effektiv und inspiriert von Ruby on Rails. Es war auch eine großartige Gelegenheit, mein Wissen über die Erstellung von NPM-Paketen aufzufrischen, was ich seit 9 Jahren nicht mehr getan hatte.


Design

Erwartungen an den Router:

  1. Routing wird in einer separaten Datei definiert

Dies vereinfacht die Bewerbungsstruktur und vermeidet ein Überladen der Hauptbewerbungsdatei.

import {
  root,
  get,
  post,
  routeScope as scope,
  getRouter,
} from "miniframe-router";

// Root routes
root("index#home");

// Basic CRUD routes
get("/users", "users#index");
get("/users/:id", "users#show");
post("/users", "users#create");
post("/users/:id", "users#update");
post("/users/:id/destroy", "users#destroy");

// Posts routes with scope
scope("blog", () => {
  get("/posts", "posts#index");
  get("/posts/:id", "posts#show");
  post("/posts", "posts#create");
  post("/posts/:id", "posts#update");
  post("/posts/:id/destroy", "posts#destroy");
});

export default getRouter;
  1. Der Router integriert sich in die Haupt-ExpressJS-Datei

Ein einfacher und effektiver Einstiegspunkt für die Anwendung: src/index.js oder src/main.js.

import express from "express";
import getRouter from "./routes"; //  {
  console.log("Demo app is running on http://localhost:3000");
});
  1. Befolgen Sie die Konventionen zum Anschließen von Controllern

Controller befinden sich im Verzeichnis src/controllers.

MyApp
└── src
    ├── controllers
    │   ├── blog
    │   │   └── postsController.ts
    │   ├── indexController.ts
    │   └── usersController.ts
    ├── index.ts
    └── routes
        └── index.ts

Dateistruktur

  • Routen werden in src/routes/index.js definiert.
  • Controller enthalten die Logik zur Bearbeitung von Anfragen:

Beispiel: src/controllers/usersController.ts (oder .js).

// Root routes
root("index#home");

// Basic CRUD routes
get("/users", "users#index");
get("/users/:id", "users#show");
post("/users", "users#create");
post("/users/:id", "users#update");
post("/users/:id/destroy", "users#destroy");

// Posts routes with scope
scope("blog", () => {
  get("/posts", "posts#index");
  get("/posts/:id", "posts#show");
  post("/posts", "posts#create");
  post("/posts/:id", "posts#update");
  post("/posts/:id/destroy", "posts#destroy");
});

Durchführung

Schritte:

  1. Erstellen Sie einen Entwicklungscontainer mit Docker.
  2. Richten Sie ESBuild zum Kompilieren von TypeScript zu JavaScript ein.
  3. Installieren Sie Jest zum Testen.
  4. Schreiben Sie Tests, um die erste Version des Routers zu validieren.
  5. Implementieren Sie den Router, bis alle Tests bestanden sind.
  6. Meine lange ungenutzten NPM-Anmeldeinformationen wiederherstellen (nach 9 Jahren).
  7. Veröffentlichen Sie das NPM-Paket als Version 1.0.0.
  8. Beheben Sie kritische Installationsfehler und entfernen Sie die Versionen 1.0.0 und 1.1.0. ?
  9. Wenden Sie den Router auf ein Produktionsprojekt mit einem Dutzend Routen an.

Fragen und Antworten

Warum überhaupt das tun? Es gibt so viele bestehende Lösungen!

  • Es ist interessant, nützlich und trägt zur Lösungsvielfalt bei.

Warum so einfach? Sollte es nicht komplexer sein?

  • Nach dem KISS-Prinzip. Komplexität kann später nach Bedarf hinzugefügt werden.

Warum Controller? Sind sie nicht unnötig?

  • Controller sind praktisch für kleine Projekte. Höhere Abstraktionen wie aktions-/operationsähnliche Lösungen eignen sich besser für größere Systeme.

Funktioniert diese Lösung überhaupt?

  • Absolut! Der Router wurde in einer kleinen Produktions-App verwendet und funktionierte bei Dutzenden von Routen perfekt.

Welche Projektgrößen können damit bearbeitet werden?

  • Miniframe-Router eignet sich für Anwendungen mit Dutzenden von Routen. Es gibt keine strengen Größenbeschränkungen.

Abschluss

Projektcode und Dokumentation: GitHub – Miniframe-Router

NPM-Paket: Miniframe-Router

Gefällt mir, teile und abonniere! Konstruktives Feedback ist jederzeit willkommen.

Autorenseite: GitHub – the-teacher

Das obige ist der detaillierte Inhalt vonminiframe-router: Router für Express.JS-Anwendungen. 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
Die Beziehung zwischen JavaScript, C und BrowsernDie Beziehung zwischen JavaScript, C und BrowsernMay 01, 2025 am 12:06 AM

Einführung Ich weiß, dass Sie es vielleicht seltsam finden. Was genau muss JavaScript, C und Browser tun? Sie scheinen nicht miteinander verbunden zu sein, aber tatsächlich spielen sie eine sehr wichtige Rolle in der modernen Webentwicklung. Heute werden wir die enge Verbindung zwischen diesen drei diskutieren. In diesem Artikel erfahren Sie, wie JavaScript im Browser ausgeführt wird, die Rolle von C in der Browser -Engine und wie sie zusammenarbeiten, um das Rendern und die Interaktion von Webseiten voranzutreiben. Wir alle kennen die Beziehung zwischen JavaScript und Browser. JavaScript ist die Kernsprache der Front-End-Entwicklung. Es läuft direkt im Browser und macht Webseiten lebhaft und interessant. Haben Sie sich jemals gefragt, warum Javascr

Node.js Streams mit TypeScriptNode.js Streams mit TypeScriptApr 30, 2025 am 08:22 AM

Node.js zeichnet sich bei effizienten E/A aus, vor allem bei Streams. Streams verarbeiten Daten inkrementell und vermeiden Speicherüberladung-ideal für große Dateien, Netzwerkaufgaben und Echtzeitanwendungen. Die Kombination von Streams mit der TypeScript -Sicherheit erzeugt eine POWE

Python vs. JavaScript: Leistung und EffizienzüberlegungenPython vs. JavaScript: Leistung und EffizienzüberlegungenApr 30, 2025 am 12:08 AM

Die Unterschiede in der Leistung und der Effizienz zwischen Python und JavaScript spiegeln sich hauptsächlich in: 1 wider: 1) Als interpretierter Sprache läuft Python langsam, weist jedoch eine hohe Entwicklungseffizienz auf und ist für eine schnelle Prototypentwicklung geeignet. 2) JavaScript ist auf einen einzelnen Thread im Browser beschränkt, aber Multi-Threading- und Asynchronen-E/A können verwendet werden, um die Leistung in Node.js zu verbessern, und beide haben Vorteile in tatsächlichen Projekten.

Die Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheDie Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheApr 29, 2025 am 12:51 AM

JavaScript stammt aus dem Jahr 1995 und wurde von Brandon Ike erstellt und realisierte die Sprache in C. 1.C-Sprache bietet Programmierfunktionen auf hoher Leistung und Systemebene für JavaScript. 2. Die Speicherverwaltung und die Leistungsoptimierung von JavaScript basieren auf C -Sprache. 3. Die plattformübergreifende Funktion der C-Sprache hilft JavaScript, auf verschiedenen Betriebssystemen effizient zu laufen.

Hinter den Kulissen: Welche Sprache macht JavaScript?Hinter den Kulissen: Welche Sprache macht JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript wird in Browsern und Node.js -Umgebungen ausgeführt und stützt sich auf die JavaScript -Engine, um Code zu analysieren und auszuführen. 1) abstrakter Syntaxbaum (AST) in der Parsenstufe erzeugen; 2) AST in die Kompilierungsphase in Bytecode oder Maschinencode umwandeln; 3) Führen Sie den kompilierten Code in der Ausführungsstufe aus.

Die Zukunft von Python und JavaScript: Trends und VorhersagenDie Zukunft von Python und JavaScript: Trends und VorhersagenApr 27, 2025 am 12:21 AM

Zu den zukünftigen Trends von Python und JavaScript gehören: 1. Python wird seine Position in den Bereichen wissenschaftlicher Computer und KI konsolidieren. JavaScript wird die Entwicklung der Web-Technologie fördern. Beide werden die Anwendungsszenarien in ihren jeweiligen Bereichen weiter erweitern und mehr Durchbrüche in der Leistung erzielen.

Python vs. JavaScript: Entwicklungsumgebungen und ToolsPython vs. JavaScript: Entwicklungsumgebungen und ToolsApr 26, 2025 am 12:09 AM

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

Ist JavaScript in C geschrieben? Prüfung der BeweiseIst JavaScript in C geschrieben? Prüfung der BeweiseApr 25, 2025 am 12:15 AM

Ja, der Motorkern von JavaScript ist in C. 1) Die C -Sprache bietet eine effiziente Leistung und die zugrunde liegende Steuerung, die für die Entwicklung der JavaScript -Engine geeignet ist. 2) Die V8-Engine als Beispiel wird sein Kern in C geschrieben, wobei die Effizienz und objektorientierte Eigenschaften von C kombiniert werden.

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 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft