In ExpressJS è possibile utilizzare URL assoluti nelle view di un'applicazione.

A differenza di PHP, Node.js non dispone di una feature equivalente all'array superglobale $_SERVER. Per ovviare a questa carenza, molti sviluppatori sfruttano una caratteristica Unix della sintassi degli URL per cui ogni URL che inizia con un forward slash (/) viene automaticamente risolto come un URL assoluto sottintendendo l'URL base del dominio.

Inserire gli URL in questo modo non è raccomandato per una corretta ottimizzazione SEO. Se vogliamo costruire URL completi, dobbiamo innanzitutto condividere l'URL di base del dominio con tutte le view.

Per farlo, salviamo l'URL di base in un file di configurazione.

'use strict';

module.exports = {
    siteURL: 'https://sito.tld/'
};    

A questo punto possiamo sfruttare l'oggetto locals di ExpressJS per condividere il valore salvato con tutte le view.

'use strict';

const app = require('express')();
const { siteURL } = require('./config');

app.locals.siteURL = siteURL;

Quindi nelle view (qui in EJS) possiamo avere:

<a href="<%= siteURL %>contatti">Contatti</a>

Si tenga presente che usando l'oggetto locals il valore viene condiviso anche dalle route della nostra applicazione accedendo alla proprietà request.app.locals. Così facendo è possibile usare il valore condiviso già nella fase di elaborazione della richiesta HTTP.