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