Я лично предпочитаю первый подход, так как чувствую, что он хранит мои логики c внутри контроллера, и мои маршруты становятся совершенно очевидными, когда все, что они делают, это используют метод из контроллера и сопоставляют его с маршрутом.
Но я очень младший разработчик, и я постоянно нахожу, что люди больше используют второй подход. Кто-нибудь с большим знанием, чем я могу объяснить мне, если мой подход плох и почему. Я понимаю и то и другое, но, как я уже сказал, я только начинаю свою карьеру разработчика, и мне нужно сделать свой код читабельным / простым, поэтому мне нужно узнать, какой подход лучше для какого случая.
Спасибо!
//this is /routes/product.ts
import product from "../controllers/Product";
module.exports = function(app: Application) {
app.get("/api/product", product.getAll);
app.post("/api/product", product.create);
app.get("/api/product/:_id", product.getOne);
app.put("/api/product/:_id/edit", product.update);
app.delete("/api/product/:_id", product.delete);
};
---------------------------------------------------
//this is app.ts
import express, { Application } from "express";
class App {
app: Application;
constructor() {
this.app = express();
this.routes();
}
routes() {
require("../routes/product")(this.app);
}
}
}
export default App;
//this is .routes/index.ts
import { Router, Request, Response } from "express";
import Product from "../models/Product";
const router = Router();
router
.route("/create")
.get((req: Request, res: Response) => {
res.render("product/create");
})
.post(async (req: Request, res: Response) => {
const { title, description } = req.body;
const newProduct = new Product({ title, description });
await newProduct.save();
res.redirect("/product/list");
});
export default router;
----------------------------------------------------
//this is app.ts
import express, { Application } from "express";
import indexRoute from "./routes/index";
class App {
app: Application;
constructor() {
this.app = express();
this.routes();
}
routes() {
this.app.use(indexRoute);
}
}
export default App;