Rutas y enlaces
Usando Express
Con Express es mucho mas fácil controlar las peticiones al servidor y rutear los procesos hacia cada programa de manera eficiente. Esta sería la configuración básica de un servidor usando Express:
const fs = require('node:fs')
const path = require('node:path')
const express = require('express') // Framework
const ejs = require('ejs') // Templates
async function main(){
console.log('App is running...')
const app = express()
app.use(express.static(path.join(__dirname, 'public'))) // static files here
app.set('views', path.join(__dirname, 'pages')) // use pages folder
app.set('view engine', 'html') // use HTML templates
app.engine('html', ejs.renderFile) // use EJS engine
// ROUTER
app.get('/', (res, req)=>{
res.render('index')
})
app.get('/about', (res, req)=>{
res.render('about')
})
app.get('/contact', (res, req)=>{
res.render('contact')
})
app.post('/contact', (res, req)=>{
const name = req.body.name || 'Anonymous'
const phone = req.body.name || 'Unknown'
console.log('Data:', name, hone)
// const ok = database.saveContact(name, phone) // NOT READY
res.redirect('/thankyou')
})
app.get('/thankyou', (res, req)=>{
res.render('thankyou')
})
// Catch all
app.get(/(.*)/, (res, req)=>{
res.render('notfound')
})
app.listen(3000)
}
main()
Guardamos el archivo como index.js
y podemos ejecutarlo asi:
$ node index
App is running...
Esta es la estructura de archivos que deberíamos tener para nuestra app:
myapp
• index.js
• package.json
/ node_modules (installed with npm)
/ pages
• index.html
• contact.html
• about.html
/ public
• logo.jpg
• hero.jpg
• style.css
• main.js