Project

General

Profile

Actions

Feature #5137

closed

Support d'angularjs dans Silverpeas

Added by Miguel Moquillon about 8 years ago. Updated about 8 years ago.

Status:
Closed
Priority:
Normal
Category:
Panneau utilisateurs
Start date:
11/28/2013
Due date:
% Done:

100%

Estimated time:
Livraison en TEST:
Livraison en PROD:

Description

Avec l'évolution de Silverpeas et l'importance grandissante que prend le Javascript dans les pages Web, il serait intéressant de pouvoir intégrer un framework Javascript dans le but d'industrialiser nos développements client Web comme nous le faisons déjà côté serveur. Ceci nous permettrait d'une part de poursuivre notre élan de modernisation de Silverpeas, et d'autre part d'améliorer nos développements (en temps et en coût).

L'utilisation de JQuery est devenue de plus en plus prépondérante dans la conception de nos pages Web. Or, JQuery est un outil bas niveau qui permet la manipulation du DOM d'une page Web et, selon la complexité du widget à écrire ou des traitements des événements à effectuer, le code avec JQuery peut devenir rapidement difficile à lire et à maintenir. Le choix du framework ici sera de pouvoir :
  • faciliter l'écriture et la maintenance de widgets simples comme complexes,
  • faciliter l'écriture et la maintenance du code de traitement des interactions de l'utilisateur,
  • pouvoir se concentrer plus sur les aspects IHM et beaucoup moins sur ceux techniques,
  • pouvoir s'interfacer avec les plugins JQuery,
  • être suffisamment stable et avec un avenir certain.

Actuellement, trois frameworks sont envisageables de par leur notoriété et leur potentiel : Blackbone, AngularJS, et EmberJS.

Actions #1

Updated by Miguel Moquillon about 8 years ago

  • Status changed from New to In progress...

Le framework Backbone est laissé de côté parce qu'il n'est pas d'assez haut niveau en terme d'abstractions et de conception. Il demande encore pas mal de plomberie (et donc de codes Javascript). Il est en effet au même niveau que JQuery mais plus concentré sur les interactions de l'utilisateur.

Il reste donc deux frameworks à tester: AngularJS et EmberJS. Dans le cadre de l'étude, afin de cerner vraiment le potentiel de ces frameworks et aussi leur défauts, ils seront testé avec un cas d'utilisation réel et suffisamment complexe pour mettre en évidence ces points. C'est dans ce cadre que le panneau de sélection des utilisateurs sera réécrit avec chacune de ces technologies.

Actions #2

Updated by Miguel Moquillon about 8 years ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 100

Des deux frameworks étudiés, le choix a été porté sur AngularJS. EmberJS, bien que de niveau d'abstraction supérieur et offrant des perspectives alléchantes, ne possède pas encore la maturité et la stabilité suffisante pour être utilisé dans un contexte comme Silverpeas. De plus, sa communauté est bien moindre de celle d'AngularJS qui a Google derrière lui.

Le framework AngularJS a donc été intégré dans Silverpeas. Une documentation sur son utilisation dans Silverpeas a aussi été écrite. Le panneau de sélection des utilisateurs a été réécrit avec le résultat de cette intégration afin d'une part de valider celle-ci et d'illustrer son usage.

Actions #3

Updated by Sebastien Vuillet about 8 years ago

Quid d'un framework MVC ou MVP avec GWT ?

Actions #4

Updated by Miguel Moquillon about 8 years ago

AngularJS est un framework MVC mais qui reste compatible avec l'existant (plain old javascript code et JQuery).

Je n'ai pas testé l'intégration de GWT. A mes yeux il a deux gros défauts :
  • c'est du code Java qui est ensuite compilé en Javascript : on ne sort pas du modèle Java et le développeur peut avoir du mal à séparer les préoccupations de la partie IHM côté client de celles côté serveur (voir même de celles du métier),
  • il n'est plus supporté par Google et vivote plus qu'il n'évolue. On n'a pas vu de grandes évolutions dans son portefeuille de widgets ou extensions.

Note : le dernier point peut être vue aussi comme un point positif au sens où le développeur n'a pas à connaître et comprendre les arcanes du Javascript et reste dans son langage préféré, et que le javascript généré est optimisé par GWT selon les règles de l'art.

Actions #5

Updated by Sebastien Vuillet about 8 years ago

GWT permet de s'intégrer sans problème avec l'existant (il y a une API dédié à cela), les looks que j'ai réalisé en sont la preuve.

La génération est souvent vu comme un défaut, mais c'est aussi comme tu le dis un atout majeur.

Le fait, que GWT ne soit plus sous la coupe de Google est un avantage, GWT est "vraiment" opensource maintenant. Il n'y a d'ailleurs jamais eu autant de correctifs et d'amélioration depuis ce changement.
Pour le portefeuille de widgets c'est un reproche qui a toujours été fait à GWT... Mais ce n'est pas son objectif premier, un peu comme AngularJS le but n'est pas d'offrir des widgets, mais des mécanismes de simplification et de structuration du code.

Dernier point, avec GWT il est possible et de manière simple de mettre en place des tests unitaires automatisés sur le code produit, ce qui en Javascript n'est pas aisé.

Actions #6

Updated by Nicolas Eysseric about 8 years ago

  • Category set to Panneau utilisateurs
  • Status changed from Resolved to Closed
  • Assignee set to Miguel Moquillon

OK. Validé et intégré.

Actions

Also available in: Atom PDF