8
votes

Comment êtes-vous minifiez / obfusez le code JavaScript dans un JSP qui a mélangé JSP / JSTL Variables?

arranges.jsp: xxx

Je veux minifier / obscurcir JavaScript contenait dans un grand fichier JSP dans lequel de nombreuses variables JSP / JSTL sont mélangées dans le JavaScript code tel que dans le snippet ci-dessus.

Le code repose sur des variables remplacées à l'aide de la logique côté serveur, puis transmise au code côté client, comme ci-dessus.

Je suis déjà Minififier mes fichiers JS à l'aide de yui compresseur, mais je ne sais pas quoi faire sur le code JavaScript dans ma JSPS.

est-il possible de minifier / obscurcir ce code, étant donné qu'il est créé de manière dynamique?


5 commentaires

Vous devez avoir une sorte de serveur de serveur pour faire cela à la volée; Y a-t-il vraiment assez de code sur vos pages pour justifier cependant-la cependant?


Je ne sais pas ce que vous voulez dire de le faire sur la volée sur un serveur. (Oui. Il y a beaucoup de code.)


Eh bien, au lieu de garder tout ce code sur vos pages, vous feriez mieux de tirer autant que possible dans des fichiers .js distincts. Ce que vous allez continuer sur les pages serait une quantité minimale de déclarations variables traitées par JSP. Vos fichiers de .js distincts n'accèdaient à ceux en les trouvant sur chaque page.


Séparer les JS en un fichier séparé serait bien ... mais semble être beaucoup de travail et de tests supplémentaires ... Cependant, ne gardez pas de code d'écriture qui génère des déclarations javascript dynamiques. Vous devez vous déplacer vers JS statique qui utilise des données, au lieu de la générer de manière dynamique avec une langue latérale du serveur, en gardant vos pièces séparées dans des endroits séparés.


@Oscar: Avez-vous trouvé une solution pour cela?


5 Réponses :


0
votes

Je ne vois pas d'autres moyens que de déléguer pleinement le travail à Pure JS avec l'aide de pouvoirs ajaxiques en combinaison avec un servlet qui renvoie les informations souhaitées sur une demande Ajax (en saveur de JSON?).

E.g. dans servlet p> xxx pré>

et en JS (avec peu d'aide de jQuery depuis Il rend l'AJAX fonctionne moins Verbose) P>

$.getJSON('servleturl', function(data) {
    var x = data.x;
    if (!data.doExternal) {
        processExternalArrays();
    }
});


0 commentaires

2
votes

Avez-vous consulté HTMLCompresseur ? En bref, c'est un:

compresseur Java HTML / XML est un très Petite bibliothèque rapide, rapide et facile à utiliser cette minirogne donnée de la source HTML ou XML En supprimant des espaces de surs, Commentaires et autres caractères inutiles sans casser le contenu Structure.

La fonction principale est tellement compressez HTML et XML, mais il est également livré avec des balises JSP pouvant être utilisées pour compresser les blocs JavaScript en ligne en tirant parti du compresseur YUI. Découvrez la page Code Google, notamment le Compression du contenu sélectif dans les pages JSP . < / p>


2 commentaires

Le compresseur YUI ne peut pas gérer les étiquettes JSP incorporées dans le code JavaScript lui-même. Dans le scénario décrit par l'OP, vous avez des pages HTML contenant des fragments JavaScript inline qui contiennent à son tour des balises JSP incorporées. Lorsque HTMLCompressor appelle YUI pour compresser les fragments JavaScript, YUI ne pourra pas gérer les étiquettes JSP incorporées.


@Grodriguez true. C'est quelque chose que j'ai négligé quand j'ai posté cette réponse. Je pensais que l'OP pourrait être capable d'utiliser le taglib, cependant, je pensais que cela vaut toujours la peine de garder cette réponse ici. La solution réelle consiste à ne pas générer de tas de JavaScript de manière dynamique, mais génère plutôt les données comme objet JavaScript et transmettez-la au code JavaScript statique lorsque Juan Mendes mentionne dans les commentaires de l'OP.



0
votes

Assurez-vous que votre sortie est codée Gzip (Apache Mod_deflate). Minimiser le HTML / JS d'abord peut en faire un peu plus petit, mais pas par beaucoup.


0 commentaires

0
votes

Si vous ne pouvez pas, ou ne voulez pas, déplacez votre JavaScript hors de votre HTML, une possibilité serait de créer un gestionnaire de balises qui enveloppe le contenu de votre