Un framework pour du dev web?

Je supporte plutôt mal les technos web (on peut cracher tant qu’on veut sur PHP, et avec raison qui plus est, mais en fait je le trouve très représentatif de l’ensemble de la pile web), mais j’apprécie assez un serveur Hunchentoot (Common Lisp) derrière nginx (qui lui va s’occuper des fichiers statiques). Avec SBCL c’est assez performant (process persistant, compilation AOT) et surtout on dispose de toute la puissance du meilleur langage jamais inventé. :mrgreen:
Seul point négatif (et de taille) : faut toujours produire du HTML/CSS (pour le JS heureusement y’a Parenscript). :eusa-whistle:

[size=65]Ah, vous dites qu’on n’est pas vendredi ?..[/size]

Tu cites Python et Ruby, tu penses à l’utilisation de Framework comme Django ou RoR pour dynamiser un site web, c’est ça??

Question complètement conne : on peut coder en php une page web sans Framework avec un éditeur de texte (au hasard Vim :whistle: ) et enregistrer en php que l’on inclura dans un fichier html

Mais est il possible d’utiliser Python ou Ruby pour coder des pages web a fortiori dynamique sans passer par un Framework??

J’espère avoir été assez claire et merci d’avance pour ton indulgence si tu estimes que c’est complètement crétin :mrgreen:

[quote=“M3t4linux”]on peut coder en php une page web sans Framework avec un éditeur de texte (au hasard Vim :whistle: ) et enregistrer en php[/quote]Oui.

[quote=“M3t4linux”]que l’on inclura dans un fichier html[/quote]Non, à partir du moment où tu veux faire du PHP, c’est PHP qui prend tout en charge.

Heureusement il est construit de telle manière que tu puisses émettre des gros blocs de HTML directement, avec juste des petits bouts de PHP par-ci par-là :

[code]

<?php echo $titre_de_la_page; ?> ...[/code] Mais ça reste un fichier .php (à moins que tu ne tripatouilles tes Handlers pour que PHP prenne en charge les .html, auquel cas c'est juste une modification cosmétique de l'extension du fichier car c'est toujours l'interpréteur PHP qui gère ça au final).

Les pages web c’est juste du texte, la plupart (tous ?) des langages se contentent de faire un “print / echo / …” pour envoyer le HTML au client, comme ils le feraient s’ils tournaient dans un terminal (à quelques différences près concernant la gestion des en-têtes HTTP, mais c’est un détail). Donc oui, les frameworks sont totalement optionnels, c’est juste une question pratique (au même titre qu’une lib d’interface graphique comme GTK ou Qt est optionnelle, il est tout à fait possible de programmer directement pour X sans couche intermédiaire – pour être honnête il est tout de même beaucoup plus facile de faire un site viable en PHP/Python/Ruby sans framework, que de faire une appli X viable sans toolkit d’interface utilisateur, la difficulté est incomparable, mais la comparaison reste valable dans le principe).

Ce bout de PHP produit une “page” tout à fait valide, et n’a besoin d’absolument aucun framework pour fonctionner :

<?php echo "Hello world!";

Ok donc ma question est pas si crétine que ça en fait :115

Bon si on décide décide d’utiliser python, et sans Framework, où placer une print("Hello world!")

Pour ce qui est de la manière de générer le code HTML Java est un bon exemple.

Il possède des servlets qui sont de simples classes qui implémentent les méthodes doPost et doGet. Dans ces méthodes on écris sur l’écran de l’utilisateur comme on écrirais sur le terminal avec des println(). C’est de loin ce qu’il y a de moins agréable.

Ensuite il y a les JSP qui permettent d’avoir des fichiers XML qui ont une gueule d’HTML à la différence qu’ils embarquent des bouts de code, comme le fait PHP. Une JSP est compilée de manière transparente vers une servlet, ce qui permet d’avoir des implémentation simple de serveur web Java (qu’on appel conteneur de servlet).

Enfin (si on reste dans les standards Java) il y a JSF, une sorte de HTML++ où l’on peut mêler du HTML avec des composants graphiques sophistiqués (par exemple une balise qui va permettre de créer un calendrier pour que l’utilisateur choisisse une date) qui sont manipuler directement par des classes Java (qui donc ne s’occupent pas de générer du HTML, du Javascript ou autre). A mon sens c’est vers ça que l’on est entrain de se diriger, c’est à dire vers une abstraction du de la pile cliente et l’écrire d’une manière ou d’une autre via un framework. C’est aussi ce que fait GWT avec du Java, du Java et uniquement du Java pour faire des interfaces web (on ne se soucie pas de savoir comment créer l’interface en HTML/CSS/JS).

\begin{signature}
J’aime vraiment pas Java. Mais il faut reconnaitre que je n’ai jamais vu d’exemples de ce type dans d’autres langages (sauf pyjama pour python mais c’est très peu utiliser). Ça ne viens pas du langage mais du travail qui est fait avec. De ce que j’en ai vu tout les framework qu’ils soient full-stack, microframework, quelque soit le langage, ils utilisent un moteur de template relativement bateau face à JSF ou GWT. Il paraît que C# a aussi un équivalent à JSF.
\end{signature}

[quote=“M3t4linux”]Ok donc ma question est pas si crétine que ça en fait :115

Bon si on décide décide d’utiliser python, et sans Framework, où placer une print("Hello world!")[/quote]

Réponse courte : ce n’est pas si simple :slightly_smiling:

On pourrait le faire en Python (et c’était plus ou moins ainsi au début je crois bien), mais c’est désormais une méthode non recommandée.
À la place, on crée plutôt une application prenant en entrée la requête HTTP, et donne en sortie le résultat HTML. Faut vraiment le voir comme un “tout” et non comme une application composée de plusieurs petits scripts qu’on pourra requêter directement depuis l’URL à la façon PHP standard.

Pour servir cette application, un standard Python a été créé, nommé WSGI (Web Server Gateway Interface), la majorité des framework Web Python sont conforme WSGI.
Une telle application est donc appelée application WSGI, et pour servir celle-ci il faut que le serveur Web soit compatible WSGI (comme c’est un standard, beaucoup le sont, notamment Apache HTTPD avec mod_wsgi).

En gros, le serveur Web envoie la requête HTTP à l’application WSGI, celle-ci l’analyse (avec un système de routage par exemple : on va lié l’URL “/contact” à la méthode “contact_form()”) et retourne la réponse adéquate.
Dans Apache on mettrait qqchose de ce style :

WSGIScriptAlias / /path/to/my_site/my_site.wsgi

my_site.wsgi étant un script Python instanciant l’application WSGI proprement dite (consulter la façon de faire selon le framework utilisé).

L’avantage de ce standard, c’est qu’on peut y glisser des middleware WSGI entre le serveur Web et l’application. Ou encore, avoir plusieurs applications WSGI (pouvant être développée avec des framework différents) communiquant entre elles : tu peux avoir un blog + un site e-commerce + une appli d’agenda déléguant l’authentification des utilisateurs auprès d’une autre application WSGI gérant la base des utilisateurs.

@MisterFreez : j’ai eu l’occasion de tester GWT, c’est vrai que c’est agréable de développer son appli Web comme une appli Desktop, sans mettre trop le nez dans du HTML/CSS…

Bon, apparemment il est plus facile de coder du php si l’on veut se passer d’un Framework, càd Vim

Non le wsgi n’a rien d’obligatoire. Il suffit de voir tornado pour voir que python permet de faire une appli web sans se prendre la tête avec un serveur web par exemple.

Quel est le rapport entre Vim et un framework ? Je n’utilise que Vim personnellement.

Je voulais dire qu’il est plus facile de coder du php (avec vim) et donc sans FW que du python sans FW

C’est donc possible avec Apache? Il faut installer un plugin qui prend en charge Python??

Désolé pour ces questions mais la plupart des tutos sur le net font mention du php quand il s’agit de dynamiser un site web :12

J’ai comme l’impression que tu confonds des choses là…
Framework = ensemble de librairies (fonctions) mises à la disposition du programmeur pour éviter qu’il ait à réinventer la roue.
Vim = éditeur de texte.
Rien à voir… :mrgreen: Tu peux très bien coder avec un framework tout en utilisant l’éditeur de texte de ton choix.

Tu mélangerais pas framework et IDE (Integrated Development Environment) par hasard ?

A sa décharge les IDE ont différents niveau de support de framework.

On peut utiliser n’importe quel langage. Il existe un mod_python, un mod_ruby et un mod_perl à Apache. Mais tu peut aussi utiliser CGI, FastCGI ou Simple CGI pour utiliser n’importe quel langage (le C, bash, de l’assembleur, goto++, etc).

C’est le “et donc” qui est en trop, le langage choisi n’impose en rien l’utilisation d’un framework.
Mais sinon, je répondrai oui à ta question. PHP est plus accessible/compréhensible/documenté sans doute quand on le présente comme un langage de template (un simple ‘echo “truc”;’ donnera l’effet escompté, sans avoir plein de choses autour qui nous fait poser tout autant de questions).

[quote]C’est donc possible avec Apache? Il faut installer un plugin qui prend en charge Python??[/quote]Oui, mais ça reste moins abordable que PHP, je pense.

Si tu es familier avec PHP, et désire savoir ce que peut apporter un framework, tu peux regarder les tutos de Symfony/CakePHP par exemple (ce dernier est dans l’esprit de Rails).

Y’a même un mod_lisp… :041

Ok j’arrête, promis. :mrgreen:

Tu aurais pu le mettre entre parenthèses :mrgreen:

Blague à part, je me demande si je ne vais pas lancer un sondage afin de savoir quel langage vous utiliseriez à l’heure actuelle pour la création d’un site dynamique…

Comme il y a un modérateur qui a sournoisement et sans explications déplacé le sujet “sondage”, je déplace celui-là aussi.

Le Java, c’est bien aussi avec Eclipse…

curiosité profitant de ce topic et ce qu’il s’y dit… que pensez-vous de haXe ? (haxe.org/doc/intro)
il semble simple à comprendre et génèrerait du js, php, flash, c# si j’ai bien tout suivi

[quote=“Mitsu”]curiosité profitant de ce topic et ce qu’il s’y dit… que pensez-vous de haXe ? (haxe.org/doc/intro)
il semble simple à comprendre et génèrerait du js, php, flash, c# si j’ai bien tout suivi[/quote]
J’ai fait un peu de Flash avec haXe (contraint et forcé, on s’en doute, mais c’était tout de même mieux que de me coltiner le bidule d’Adobe), c’est rustique mais ça marche. Le principal problème que j’ai rencontré c’était… la documentation d’Adobe ! :005

J’ai jamais essayé de générer un autre langage mais vu la facilité de prise en main je pense que ça doit être pas mal non plus. De mémoire il rajoute du type safety même au PHP et au JS (plus besoin de martyriser des canards :041), rien que pour ça ça doit valoir le coup. La question que je me pose (et que je n’ai jamais approfondie) c’est comment se passe l’intégration avec du code existant…