Strumenti Utente

Strumenti Sito


programmazione:bun:applicazioni_multiple_server

Creare un server con molte applicazioni con Bun e il framework Express

Andremo ad avviare un server http con bun e il framework Express che avvia piu' di una applicazione collocata in sotto cartelle. Inoltre alla modifica di uno dei file dell'applicazione il server ripartirà automaticamente con le nuove modifiche.

Installazione

bun init bun_app
bun add express

Codice principale

index.js

import express from "express";
import app1 from "./apps/app1/index.js";
import app2 from "./apps/app2/index.js";
 
const app = express();
const PORT = process.env.PORT || 3000;
 
// mount delle sub-app sotto percorsi diversi
app.use("/app1", app1);
app.use("/app2", app2);
 
app.get("/", (req, res) => {
  res.send("Hello World!");
})
 
 
app.listen(PORT, () => console.log(`Listening on http://localhost:${PORT}`));

apps/app1/index.js

import express from "express";
 
const app = express();
 
app.get("/", (req, res) => {
  res.send("Hello from App1 root");
});
 
 
app.get("/prova", (req, res) => {
  res.send("Prova delle prove");
});
 
export default app;

apps/app2/index.js

import express from "express";
 
const app = express();
 
app.get("/", (req, res) => {
  res.send("Hello from App2 root");
});
 
 
app.get("/prova", (req, res) => {
  res.send("Prova delle prove app2");
});
 
export default app;

Avviare il server con il caricamento a caldo degli script:

bun --watch index.ts 

Lavorare con i template ejs

Installiamo ejs con bun nel nostro progetto:

bun add ejs

views/index.ejs

<!DOCTYPE html>
<html>
 
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<title>Hello</title>
</head>
 
<body>
	<h1>
		<%= title%>
	</h1>
	<p>
		<%= message %>
	</p>
	<p>Aggiunto a caldo.</p>
</body>
 
</html>

Lo utilizzo così:

import express from "express";
import path from "path";
const app = express();
 
//Ricavo cartella dove è contenuto lo script che sto eseguendo
import { fileURLToPath } from "url";
import { dirname } from "path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
 
app.set("view engine", "ejs");
app.set("views", path.resolve(__dirname+"/views/"));
 
 
app.get("/:user", (req, res) => {
  res.render("index", { title: "Home", message: `Ciao da ${req.params.user}` });
});
 
 
 
export default app;
programmazione/bun/applicazioni_multiple_server.txt · Ultima modifica: 26/05/2026 11:02 da Fabio Di Matteo