Krys4lide/crates/app
2024-09-16 22:58:41 +02:00
..
assets feat: add a DEBUG page to the UI with a database usage example 2024-09-16 22:58:41 +02:00
css feat: Setup Tailwind CSS 2024-08-06 21:11:04 +02:00
src feat: add a DEBUG page to the UI with a database usage example 2024-09-16 22:58:41 +02:00
.gitignore feat: Setup Tailwind CSS 2024-08-06 21:11:04 +02:00
askama.toml feat: Rewrite routes, pages and components to be more HATEOAS 2024-08-27 11:19:59 +02:00
Cargo.toml feat: setup seaorm and a first "debug" entity as example 2024-09-16 22:57:16 +02:00
README.md feat: setup seaorm and a first "debug" entity as example 2024-09-16 22:57:16 +02:00
tailwind.config.js chore: update style.css 2024-08-27 11:19:59 +02:00

Pré-requis

Configuration

Astuce : lorsqu'on exécute directement la crate App à des fins de développement, le système de configuration n'utilisera pas l'éventuel fichier .env situé à la racine du workspace Rust. Pour éviter de dupliquer le fichier .env, il est possible de créer un lien symbolique vers le fichier .env de la crate App :

cd crates/app
ln -s ../../.env .env

Exécution

  • Lancer tailwindcss en mode watch dans un terminal :
./tailwindcss -i css/input.css -o assets/css/style.css --watch
  • Lancer le serveur web dans un autre terminal :
cargo run --bin app

Rechargement automatique (auto-reload)

Pour le projet app, nous utilisons en plus de cargo-watch ses librairies :

  • systemfd permet de redémarrer un serveur sans interrompre les connexions en cours, il transmet le descripteur de fichier du socket à une nouvelle instance du serveur (exemple: cargo watch -x run --> systemfd --no-pid -s http::3000 -- cargo watch -x run). Si le port est déjà pris il en prendra un autre.
  • listenfd permet, côté Rust, de démarrer un serveur en utilisant des connexions déjà ouvertes.

Pour notre application voici la commande à lancer :

systemfd --no-pid -s http::3000 -- cargo watch -x 'run --bin app'

Chargement à chaud (livereload)

Pour que notre navigateur rafraîchisse automatique notre page lorsque le serveur a été recompilé, nous utilisons la librairie tower-livereload.

A chaque changement, que ça soit sur du code en Rust, HTML, CSS ou JS alors le navigateur va recharger entièrement la page.

En Rust, il n'existe pas encore d'outil de Hot Reload complet et intégré comme on en trouve dans d'autres environnements de développement web, comme pour Node.js.