Limites du framework Slim

Le problème exposé dans ce sujet a été résolu.

Bonsoir,

J’ai un petit projet en tête depuis quelques jours. Je souhaites utiliser des frameworks pour étendre mes connaissances.

Pour le côté front-end, j’ai pensé à utiliser Bulma associé à Animate.css pour comme son nom l’indique, les animations. Je me suis dis que Bulma étant populaire en ce moment, de taille relativement faible et utilisable avec SASS, ça pouvait être un choix intéressant. Concernant les animations, je me suis dit que le JavaScript était sans doute trop lourd pour la légèreté du projet. Pas de jQuery du coup mais cette découverte en CSS. N’hésitez pas à me donner votre avis personnel.

J’ai fait des recherches concernant un framework léger en PHP. J’ai déjà utilisé CodeIgniter, Laravel et dans une moindre mesure, Symfony. J’ai récemment découvert Slim. Par contre, je ne sais pas si c’est un framework MVC assez complet. Si quelqu’un l’a déjà utilisé pour un projet, j’aimerai avoir des retours sur les limites de ce framework. Je ne souhaite pas utiliser d’outils comme Grav ou Hugo car il y aura régulièrement des mises à jours de données.

En parlant de données, je me demande si l’utilisation de Slim est correct avec des requêtes en SQL (ou ORM). Je pense que j’utiliserai REST pour une partie des des données dès le début ou à moyen terme. Le reste sera normalement utilisé.

En fait, j’étais à la base partie pour utiliser Laravel. Je ne sais pas si c’est judicieux pour un petit projet.

Les microframeworks, du même type que Slim, n’ont pas de limites en soit, si tu as besoin de quelque chose, il suffit de l’ajouter (il y a des bibliothèque pour tout). J’ai déjà joué avec Slim et j’ai trouvé assez compliqué d’ajouter ces modules justement.

Si tu trouves Laravel trop gros pour un petit projet, je te conseil Lumen qui est tout aussi excellent que son grand frère mais en ne gardant que le principal. Tu peux facilement ajouter les différents modules de Laravel que tu souhaites utiliser. Il embarque cependant, de base, Eloquent et Blade.

+0 -0

J’avais remarqué qu’il était possible d’ajouter des modules. Il y a par exemple un guide sur leur site traitant sur Eloquent pour Slim. Par limites, j’inclue aussi la difficulté ou le temps à fournir pour ajouter ce dont j’ai besoin. En fait, je ne vois pas l’utilité d’ajouter moi-même ce qu’il y aurait déjà intégré dans un autre framework.

Je suis tombé sur Lumen au cours de mes recherches. Je pensais par contre qu’il s’agissait de la même chose que Slim avec pour différence l’auteur. Je l’ai écarté de mes choix face à Slim par rapport à la popularité. Lumen voir même Silex sont en fait plus complets que Slim ?

Je viens de me poser une question. Serait-il judicieux d’utiliser Slim pour ce qui est de REST et pour le site, le faire avec Laravel ou Lumen (en se connecter à l’API réalisé sur Slim quand le besoin est) ?

En fait, je ne vois pas l’utilité d’ajouter moi-même ce qu’il y aurait déjà intégré dans un autre framework.

Dans ce cas, utilise Laravel ou Symfony. ;)

Personnellement, je partirai sur Lumen ou Slim pour l’API (c’est vraiment une question de préférences entre les deux, il n’y a pas beaucoup de différence. Après comme tu as l’air de connaître Laravel, la courbe d’apprentissage sera peut-être plus rapide avec Lumen, à voir). Et pour le site, qui fait appel à l’API d’après ce que j’ai compris, j’utiliserai VueJS, Preact.. Un framework frontend.

L’avantage principal de Slim, c’est qu’il respecte à 100% le PSR-7. Lumen le fait aussi, mais te propose des raccourcis avec les façades, ce qui rend le code plus lisible. Pour Silex je ne sais pas. Avec ces trois technologies, tu arriveras au même résultat, c’est vraiment une question de préférence.

Je souhaite utiliser REST seulement pour les données étant aussi utilisé par une application en Javascript (Node.js). Je ne me vois donc pas utiliser un framework front-end. Je ne vois pas l’intérêt d’utiliser REST pour le reste du contenu. À la rigueur, si je fais le choix de mettre en statique ce qui est (quasiment) jamais modifié et le modifier à la main dans le HTML quand le besoin se ferait, pourquoi pas utiliser VueJS.

Je pense utiliser Slim + Laraval si le contenu est stocker dans une base de données et Slim + VueJS si le contenu est statique. C’est pas contre-productif de faire ça ?

VueJS n’est pas pour les petits projets ? Je ne le connais pas plus que ça mais j’ai entendu dire qu’il s’agissait d’une alternative légère de AngularJS.

C’est pas vraiment ça le problème¹. Souvent, quand on part sur une SPA (donc avec du rendu coté client, en JS), qu’on utilise AngularJS ou Preact on va aussi utiliser des tas d’autres bibliothèques comme Moment, Lodash, RxJS qui vont plomber beaucoup, beaucoup plus l’application que la petite fonction de rendu qui prends des objets en entrée et qui sort du HTML en sortie.

Et je ne vais pas parler du référencement par les moteurs de recherche, de toutes les joyeusetés pour faire communiquer le client et le serveur et de comment tester automatiquement l’ensemble. :)

Alors que bon, quand on fait tout le rendu côté serveur à l’ancienne, on n’a pas tout ces problèmes.

(Mais bien sûr, je ne dis pas qu’il ne faut jamais faire de SPA. Il faut juste voir si ça correspond bien à ton besoin en fait.)


¹: Bon c’est vrai, AngularJS c’est assez dépassé. Je ne suis pas pour autant très fan de Vue ceci dit.

+1 -0

L’utilisation de VueJS, AngularJS ou React oblige l’utilisation d’une page dont les données changent via JavaScript ? Il n’y a jamais de changement de page HTML ?

Je pense partir sur Laravel si c’est le cas. Je me suis toujours demandé à quel moment l’utilisation de ce type de framework est disproportionné par rapport à la taille du projet.

L’utilisation de VueJS, AngularJS ou React oblige l’utilisation d’une page dont les données changent via JavaScript ? Il n’y a jamais de changement de page HTML ?

C’est possible, mais ça reste "pas trivial". (ftr ça s’appelle universal rendering).

Je pense partir sur Laravel si c’est le cas. Je me suis toujours demandé à quel moment l’utilisation de ce type de framework est disproportionné par rapport à la taille du projet.

Un peu tout le monde se demande ça.

Si tu travailles en entreprise, que tu sais que c’est un projet qui va grossir, qui est critique, qui va rester (i.e. vieillir), il vaudrait mieux utiliser un framework, et si possible, le framework qui vieillira le mieux (et dans le monde du Javascript, ça veut dire : "Le truc qui me permettra de ré-écrire l’application dans 1 an sans trop trop de difficulté" vu la vitesse à laquelle les frameworks se remplacent les uns les autres).

Si tu travailles tout seul, fais-toi plaisir, et choisis la stack technologique qui te donne envie. Le plus important étant d’être le plus souple possible dans tes choix : pense "modulaire". Histoire que le jour où t’as envie de ré-écrire ton module XXX, tu puisses le faire sans avoir à ré-écrire tout le projet. En ce sens, séparer front-end et back-end et les faire communiquer par API, c’est sans doute la meilleure idée.

+0 -0

Mon avis tend de plus en plus à la combinaison de Slim et de Laravel. Je pense que ça pourrait être intéressant pour mon propre apprentissage. Par contre, est-il bien de n’utiliser REST (et Slim) pour une partie des données : celles étant aussi utilisées par une autre application. Le reste serait récupérer via une connexion direct à la base de données. Je ne sais pas s’il est illogique de faire ça.

C’est à la limite du sujet mais je me permets de demander quand est-ce qu’il est judicieux d’utiliser un outil tel que VueJS. J’ai du mal à imaginer l’intérêt qu’il peut avoir.

Par contre, est-il bien de n’utiliser REST (et Slim) pour une partie des données : celles étant aussi utilisées par une autre application. Le reste serait récupérer via une connexion direct à la base de données.

Ça ne me choque pas, après je ne connais pas tout ton cas d’usage dans les détails.

C’est à la limite du sujet mais je me permets de demander quand est-ce qu’il est judicieux d’utiliser un outil tel que VueJS. J’ai du mal à imaginer l’intérêt qu’il peut avoir.

Je dirais que ça a surtout un intérêt pour des petites applications écrites par des gens n’ayant pas trop le temps de se pencher sur le monde de React, Preact, Elm, Cycle ou Mithril avec tout le bazard qui va avec. Je n’ai jamais utilisé Vue, mais ayant (dans le temps) passé pas mal de temps à me battre avec AngularJS, je pense connaître pas trop mal les histoires de MVVM et de two-way data binding et tous les problèmes que ça pose.

Je pense que Vue a la grande qualité d’être utilisable par à peu près n’importe qui en peu de temps. J’ai déjà vu des puristes de Go ne connaissant rien à JavaScript arriver à faire des choses simples avec Vue très rapidement. C’est probablement pas la même courbe d’apprentissage que le monde de React et compagnie.

+1 -0

Bien que mon avis vaille ce qu’il vaut, je trouve vue.js très intéressant. C’est très facile à prendre en main, modulable, et cela peut scaler trés bien, aussi bien sur un petit projet que pour un gros projet (c’est soutenu par Ali-baba si je ne dis pas de bêtise, donc ça devrait tenir la route encore quelques années). Ce que j’aime particulièrement est l’encapsulation du css dans chaque composant, ce qui rend les choses très pratiques de ce coté là.

A mes yeux d’amateur il n’a que deux inconvénients : - Tu es obligé d’avoir un rendu serveur side et du js coté serveur si tu veux gérer le SEO correctement. - Cela implique que à mettre en ligne sur ton hebergeur favori n’est pas toujours possible.

Mais si ces contraintes ne te dérangent pas ou que tu sais les gérer, c’est vraiment un plaisir d’utiliser vue.js, tu apprends très vite et tu peux ajouter des couches de complexités par la suite selon ton niveau (contrairement à angular ou react qui ont une courbe d’apprentissage plus lourde).

+0 -0

Si tu cherches un micro framework stable, puissant et évolutif, tu peux te tourner… vers Symfony. Les version 3.4 et 4 (dont la sortie est imminente) permettent de charger uniquement les composants dont tu as besoin, grâce à Symfony Flex. La puissance de Symfony avec uniquement ce dont tu as besoin.

Pour utiliser Flex sur un projet perso, je dois dire que je suis (pour le moment) ravi. Les bundles peuvent désormais s’installer tout seul, et on ne charge que ceux dont on a besoin. Il existe d’ailleurs un bundle pour créer une API qui utilise cette nouvelle façon de faire, qui est vraiment top.

Au final on garde le côté framework, qui devient très léger, avec un côté CMS pour l’installation de modules (bundles).

+0 -0

Si tu cherches un micro framework stable, puissant et évolutif, tu peux te tourner… vers Symfony. Les version 3.4 et 4 (dont la sortie est imminente) permettent de charger uniquement les composants dont tu as besoin, grâce à Symfony Flex. La puissance de Symfony avec uniquement ce dont tu as besoin.

Au final on garde le côté framework, qui devient très léger, avec un côté CMS pour l’installation de modules (bundles).

John

J’ai surtout utilisé la version 2 de Symfony. Un peu de la 3 aussi. Je trouve cet outil très bien ! Est-ce que Symfony Flex signe l’arrêt de mort à moyen terme de Silex ? Sinon, je ne souhaite pas utiliser Symfony (ni Silex) pour ce projet. Je le réserve pour quelque chose d’autre.

Quant aux autres messages traitant des framework en JavaScript, je mets tout dans le même panier. J’imagine que certains sont plus judicieux dans certains cas. Ce que je demande est général. Je ne vois dans quels cas l’utilisation de VueJS, React, AngularJS, etc. est plus intéressant que Symfony, Laravel, Ruby on Rails ou encore Django (hormis le gain de temps d’après motet-a, on dirait).

Je ne vois dans quels cas l’utilisation de VueJS, React, AngularJS, etc. est plus intéressant que Symfony, Laravel, Ruby on Rails ou encore Django (hormis le gain de temps d’après motet-a, on dirait).

En fait, quand tu disait ça :

C’est à la limite du sujet mais je me permets de demander quand est-ce qu’il est judicieux d’utiliser un outil tel que VueJS. J’ai du mal à imaginer l’intérêt qu’il peut avoir.

Je pensait que tu voulais avoir (en gros) une comparaison entre Vue et les choses “similaires” comme Angular, React et compagnie. Mais du coup c’est pas le cas et ça change tout :)

Donc en gros, je dirais que :

  • Vue, React, Angular(JS) et compagnie c’est principalement fait pour faire des clients de SPA ;
  • Django, Rails, Laravel, Phoenix et compagnie c’est plutôt fait pour faire soit des API REST (éventuellement pour une SPA), soit des sites web “à l’ancienne” (notez les guillemets) avec tout le rendu côté serveur.

J’en ai parlé un peu dans mon premier message sur ce thread mais c’est des outils différents qui servent à faire des choses complètement différentes ; et on utilise souvent les deux ensemble sur une même application. L’un ne remplace pas l’autre.

(J’espère que je t’ai éclairé un peu :) )

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte