Framework serveur et CSS
romuald.thion@unc.nc
Licence Informatique UNC 2022
https://flask.palletsprojects.com/en/2.2.0/
Flask is a lightweight WSGI web application framework. […] It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks.
Voir le cours Programmation Web pour la Bio-Informatique de Pierre-Antoine Champin qui contient un tutoriel Flask.
La principal alternative Python est https://www.djangoproject.com/. Les deux projets Flask et Django font des choix différents :
Le framework Flask se charge de tout la plomberie HTTP, le développeur ne programme que les traitements au dessus
L’association d’une fonction à une route (un modèle d’URL) se fait via le décorateur @app.route
@
pour les décorateur :
functools
Jinja est utilisé pour construire corps de la réponse, c.-à-d. le document renvoyé au navigateur. Jinja est complètement intégré à Flask.
url_for
, abort
, request
etc.On montre une application web Flask simple :
<form>
, <input>
etc.Ensemble de classes pour toute la mise en page :
La compléxité/richesses des propriétés et valeurs CSS va être abstraite par un système de classes propre au framework
Extrait de http://getbem.com/introduction/ :
(voir aussi https://css-tricks.com/bem-101/)
header, container, menu, checkbox, input
menu-item, checkbox-caption, header-title
disabled, highlighted, checked, fixed, big, red
Les alternatives sont https://getbootstrap.com/, https://purecss.io/ (avec/sans JS, minimaliste/riche, intégré/extensible)
Dans l’approche CSS utilitaire/atomique
on ne va pas proposer des classes pour des composants/éléments
on ne va pas non plus écrire ses propres class CSS
on va mettre an page en utilisant des classes très simples, mono-fonctionnelles
style
devenaient des noms de classeshttps://tailwindcss.com/ est un des principaux représentants.
De plus en plus populaire
<div class="chat-notification">
<div class="chat-notification-logo-wrapper">
<img class="chat-notification-logo" src="/img/logo.svg" alt="ChitChat Logo" />
</div>
<div class="chat-notification-content">
<h4 class="chat-notification-title">ChitChat</h4>
<p class="chat-notification-message">You have a new message!</p>
</div>
</div>
<div class="p-6 max-w-sm mx-auto bg-white rounded-xl shadow-lg flex items-center space-x-4">
<div class="shrink-0">
<img class="h-12 w-12" src="/img/logo.svg" alt="ChitChat Logo" />
</div>
<div>
<div class="text-xl font-medium text-black">ChitChat</div>
<p class="text-slate-500">You have a new message!</p>
</div>
</div>
?