From poussin@codelutin.com Mon Apr 2 17:21:36 2012 From: Benjamin POUSSIN To: nuiton-js-devel@list.nuiton.org Subject: [Nuiton-js-devel] Proposition de fonctionnement avec un plugin maven Date: Mon, 02 Apr 2012 17:33:48 +0200 Message-ID: <20120402173348.304b1e2e@codelutin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5758304372158779621==" --===============5758304372158779621== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Salut, J'ai un peu réfléchi a l'utilisation possible pour cette lib. Voici mes propositions: chaque lib est un module du projet. On indique: - l'url des fichiers à récuperer - si l'on peut utiliser ces url directement dans l'appli final On met ces libs en dépendance de son projet On configure le plugin maven-nuiton-js pour indiquer: - si l'on souhaite utiliser les fichiers distant pour ceux qui le support - si on veut utiliser son propre serveur distant en plus pour les libs qui n'ont pas de serveur propre (déploiement de nuiton-js sur un serveur) - si on veut utiliser son propre serveur distant pour toutes les libs Le plugin genere un script js ( qui est le seul a devoir être inclus dans son projet. Ce script load comme demander toutes les librairies, si la librairie distante n'est pas recuperable (ex:reseau coupé), alors le fichier js de la dépendance est utiliser. Le chargement des librairies se fait en parallele en respectant les dépendance si besoin. Les scripts spécifiques à l'application peuvent être elle aussi en module ou bien directement dans le projet. Dans ce dernier cas, la liste est indique via la fonction genere par le plugin. pour faire tout ca on peut s'appuyer/s'inspirer de head.js Un peu plus d'explication technique: Le fichier monapp-jslib.js, sera sans doute inclus dans le fichier de layout (ex: sitemesh ou tiles) et donc importé pour toutes les pages. Ce n'est pas dérangeant car non pénalisant pour le temps de chargement de la page (le chargement des scripts se faisant en tache de fond) Une fois la première page visité, tous les scripts seront dans le cache du navigateur et donc ne seront plus ramené. Si des sites autres que le serveur qui héberge l'application est utilisé cela peut-etre un plus car un serveur et les clients web ne permettent pas d'ouvrir plus de 3 ou 4 connexions pour un couple (ip client/ip serveur). De cette façon si beaucoup de script js et css sont à ramener ils le seront réellement en parallèle car sur plusieurs serveurs (et comme toujours au pire si le site distant ne répond pas, le js sera pris sur le même serveur que l'application) Voilà, les avantages que j'y trouve: - un seul import d'un seul fichier js (pas de js multiple et css) - gestion des dépendances entre lib js (ex: le script d'autocomplete est en jquery, il me faut donc aussi jquery) - chargement en parallèle des scripts et css - gestion des licences (modules maven pour chaque lib) - si utilisation de serveurs tiers pour la récupération de js et qu'il y a des proxies/caches (squid) en place, le scripts sera surement déjà dans le cache grâce à une autre application. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com --===============5758304372158779621==-- From chatellier@codelutin.com Tue Apr 3 17:10:46 2012 From: Eric Chatellier To: nuiton-js-devel@list.nuiton.org Subject: Re: [Nuiton-js-devel] Proposition de fonctionnement avec un plugin maven Date: Tue, 03 Apr 2012 17:10:40 +0200 Message-ID: <4F7B12F0.6010409@codelutin.com> In-Reply-To: <20120402173348.304b1e2e@codelutin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2984600296398591445==" --===============2984600296398591445== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Le 02/04/2012 17:33, Benjamin POUSSIN a écrit : > Salut, > > J'ai un peu réfléchi a l'utilisation possible pour cette lib. > > Voici mes propositions: > > chaque lib est un module du projet. On indique: > - l'url des fichiers à récuperer > - si l'on peut utiliser ces url directement dans l'appli final Je me suis aussi demander si ca serait intéressant que les versions releasées suivent les librairies incluses: nuiton-js:jquery:1.7.2 Après faudrait voir comment faire, mais en multi module c'est pas evident. On va aussi vite avoir pas mal de lib, et elle ne changerons pas toutes au même rythme. Donc tout re-releaser lorsqu'une change ca fait beaucoup de bruit. > > On met ces libs en dépendance de son projet > On configure le plugin maven-nuiton-js pour indiquer: > - si l'on souhaite utiliser les fichiers distant pour ceux qui le support > - si on veut utiliser son propre serveur distant en plus pour les libs > qui n'ont pas de serveur propre (déploiement de nuiton-js sur un > serveur) > - si on veut utiliser son propre serveur distant pour toutes les libs A première vue, je l'avais pensé plus simple que ca: - ajout de la lib en dépendance (provided) - extraction de la dépendance (ou une partie) via les overlays - utilisation normale de la lib js: > > pour faire tout ca on peut s'appuyer/s'inspirer de head.js Est-ce que avec cette méthode, on aura les vrai fichiers js dans la page ? genre pour faire du debug ? -- Éric Chatellier Tel: 02.40.50.29.28 http://www.codelutin.com --===============2984600296398591445==--