miniframe-router – ein minimalistischer Router für Express.JS-Anwendungen, inspiriert von Ruby on Rails. So habe ich es gemacht.
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"); });
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.
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;
Ein einfacher und effektiver Einstiegspunkt für die Anwendung: src/index.js oder src/main.js.
import express from "express"; import getRouter from "./routes"; // <<< DEFINE ROUTES const app = express(); app.use(express.json()); app.use(getRouter()); // <<< USER ROUTES app.listen(3000, () => { console.log("Demo app is running on http://localhost:3000"); });
Controller befinden sich im Verzeichnis src/controllers.
MyApp └── src ├── controllers │ ├── blog │ │ └── postsController.ts │ ├── indexController.ts │ └── usersController.ts ├── index.ts └── routes └── index.ts
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"); });
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!