Skip to content

Instantly share code, notes, and snippets.

@pongstr
Created February 12, 2017 08:23
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pongstr/ff7d0274420c8920827e065eccbc72e3 to your computer and use it in GitHub Desktop.
Save pongstr/ff7d0274420c8920827e065eccbc72e3 to your computer and use it in GitHub Desktop.
ExpressJS: Nested Routing
'use strict'
const express = require('express')
const subpage = require('./subpage')
module.exports = () => {
let Router = express.Router({mergeParams: true})
// Fetch the child page and its content.
Router
.route('/')
.get((req, res, next) => {
let content = '<pre>'
content += 'Level One : ' + req.params.page + '<br>'
content += 'Level Two : ' + req.params.child + '<br>'
content += '---------------------------------<br>'
content += 'Breadcrumb : ' + req.baseUrl
content += '</pre>'
res.send(content)
})
// You may insert static routes here, you know routes
// that have processes other than fetching content
// from a database.
// ..
// Routes that requires to fetch a page
// content from a database
Router.use('/:subpage', subpage())
return Router
}
'use strict'
const express = require('express')
const pages = require('./pages')
module.exports = () => {
let Router = express.Router()
// Get and Render home page.
Router.get('/', (req, res, next) => {
res.send('Home')
})
// You may insert static routes here, you know routes
// that have processes other than fetching content
// from a database.
// ...
// Routes that requires to fetch a page
// content from a database
Router.use('/:page', pages())
return Router
}
'use strict'
const express = require('express')
const child = require('./child')
module.exports = () => {
let Router = express.Router({mergeParams: true})
// Fetch the page and its content.
Router.route('/')
.get((req, res, next) => {
let content = '<pre>'
content += 'Level One : ' + req.params.page + '<br>'
content += '---------------------------------<br>'
content += 'Breadcrumb : ' + req.baseUrl
content += '</pre>'
res.send(content)
})
// You may insert static routes here, you know routes
// that have processes other than fetching content
// from a database.
// ...
// Routes that requires to fetch a page
// content from a database
Router.use('/:child', child())
return Router
}
'use strict'
const express = require('express')
module.exports = () => {
let Router = express.Router({mergeParams: true})
// You may insert static routes here, you know routes
// that have processes other than fetching content
// from a database.
// ..
Router
.route('/:path')
.get((req, res, next) => {
let content = '<pre>'
content += 'Level One : ' + req.params.page + '<br>'
content += 'Level Two : ' + req.params.child + '<br>'
content += 'Level Three : ' + req.params.subpage + '<br>'
content += '---------------------------------<br>'
content += 'Breadcrumb : ' + req.baseUrl + '/' + req.params.path
content += '</pre>'
res.send(content)
})
// Return subpage's parent
Router.get('/', function (req, res) {
var content = '<pre>'
content += 'Level One : ' + req.params.page + '<br>'
content += 'Level Two : ' + req.params.child + '<br>'
content += 'Level Three : ' + req.params.subpage + '<br>'
content += '---------------------------------<br>'
content += 'Breadcrumb : ' + req.baseUrl
content += '</pre>'
res.send(content)
})
return Router
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment