In defining route, we have plenty of choices - we could put all routes in single file and import it into the entry point, or we could create a main route and many sub-routes in different files and import all sub-routes into the main route that will be imported into the entry point. In fact, we could define two routes to the dashboard job and category pages as below:
//route/admin.js
import express from 'express'
const adminRoute = express.Router()
import jobRoute from './admin/job.js'
adminRoute.use('/job',jobRoute)
import categoryRoute from './admin/category.js'
adminRoute.use('/category',categoryRoute)
export default adminRoute
//route/admin/job.js
import express from 'express'
const jobRoute = express.Router()
import job from '../../controller/admin/job.js'
jobRoute.get('/',async (req,res,next)=>{
if(req.session.user){
job.getItem(req,res)
}else{
res.redirect('/login')
}
})
export default jobRoute
// controller/admin/job.js
import config from '../../config.js'
class Job{
constructor(){
(async () => {
this.config = await config()
})()
}
getItem(req,res){
this.config.pageTitle = 'ទំព័រការងារ'
this.config.route = '/admin/job'
this.config.type = 'job'
res.render('base',{data: this.config})
}
}
export default await new Job()
// route/admin/category.js
import express from "express"
const categoryRoute = express.Router()
import category from '../../controller/admin/category.js'
categoryRoute.get('/',async (req,res,next) => {
if(req.session.user){
category.getItem(req,res)
}else{
res.redirect('/login')
}
})
export default categoryRoute
// controller/admin/category.js
import config from '../../config.js'
class Category{
constructor(){
(async () => {
this.config = await config()
})()
}
getItem(req,res){
this.config.pageTitle = 'ទំព័រជំពូក'
this.config.route = '/admin/category'
this.config.type = 'category'
res.render('base',{data:this.config})
}
}
export default await new Category()