Je connais des pignons pour combiner des fichiers javascript, mais je ne l'ai pas essayé. Quelles sont les autres options et comment se cumulent-elles?
Je connais des pignons pour combiner des fichiers javascript, mais je ne l'ai pas essayé. Quelles sont les autres options et comment se cumulent-elles?
Réponses:
J'ai écrit un gestionnaire pour Asp.Net qui utilise YUI pour compresser, concaténer et mettre en cache la sortie.
Voici la source: http://gist.github.com/130913
J'ai déjà abordé cette question dans une autre question
Avec le recul, j'aurais dû le demander sur les Webmasters au lieu du site Programmeurs.
Vous avez 3 options:
Option 1 (en utilisant une extension CakePHP):
Téléchargez et installez AssetPacker sur votre site (qui nécessite également jsmin et CSSTidy). Modifiez vos quelques lignes de source qui incluent les fichiers js. Laver-> Rincer-> Répéter. Voila, le reste se fait automatiquement pour vous.
Si vous utilisez un autre framework, il y a de fortes chances qu'il existe un outil qui accomplira cela pour vous. C'est une exigence assez courante dans le monde webdev.
Option 2 (en utilisant un mod Apache):
Jetez un œil au mod Google Pagespeed pour Apache . Il fait tout ce que vous décrivez et bien plus encore.
Assurez-vous cependant de surveiller les ressources de votre serveur de production. Certaines personnes ont vu des problèmes où cela augmente la charge sur leur serveur de manière négative. Je ne suis pas positif, mais cela peut nécessiter une stratégie de contenu statique suffisante pour être une option efficace.
Option 3:
Si vous le voulez vraiment, vous pouvez créer de la magie PHP qui concatène le côté serveur de fichiers JS et combine toutes les rel de liens en un seul mais ... C'est exactement ce que les deux stratégies font déjà de toute façon.
Personnellement, je déconseille fortement cette option.
Pour autant que je sache, Sprockets concatène les fichiers JS de la même manière que AssetPacker, il est simplement implémenté comme Ruby Gem. Ce qu'il ne fait pas, c'est minimiser le code js. Donc, si vous l'utilisez, c'est probablement une bonne idée de saisir le joyau jsmin aussi. Pour plus d'informations sur l'utilisation de Sprockets + JSMin dans CakePHP, consultez ceci .
Je sais que je mets l'accent sur CakePHP mais ... Je suppose que, si un plugin peut être adapté à CakePHP, il devrait être trivial de l'adapter également à un cadre différent.
Une recherche rapide sur Google trouve cela pour combiner des fichiers CSS: http://www.tothepc.com/archives/combine-merge-multiple-css-files/
Êtes-vous sûr de vouloir les combiner? Si vous utilisez une bibliothèque commune, vous pouvez utiliser un CDN pour livrer vos javascripts. Vous pouvez ensuite profiter de la mise en cache du navigateur (en supposant que d'autres sites utilisent le même CDN) et de la distribution distribuée. Microsoft et Google ont chacun des solutions (que je n'ai pas utilisées honnêtement non plus, mais je vais certainement commencer) et il peut y en avoir d'autres.
Pour les projets ASP.NET, je l'ai intégré à mon processus de génération sur la base des instructions de Karl Seguin .
Karl le décrit le mieux sur son blog, mais la version courte consiste à configurer une application console enveloppant YUICompressor. Ensuite, vous pouvez configurer une tâche de post-génération pour appeler cette application console par rapport à l'emplacement des fichiers JS dans votre site.
Pour cela, connaître Python pourrait être utile. Vous pouvez apprendre Python assez rapidement. J'ai commencé il y a environ 2 semaines et ma première application (qui n'est toujours pas terminée) va faire exactement la même chose que vous voulez. Comme le compilateur DotLess, il aura une fonction de surveillance qui examinera les fichiers ou les répertoires et s'ils changent, il générera un nouveau fichier.
Python est également idéal pour d'autres tâches de maintenance et j'ai lu que de nombreux administrateurs système aiment l'utiliser.
J'ai créé Minifpy : un outil écrit en Python3 (compatible Mac OS, Windows et Linux) pour fusionner et minimiser les fichiers JS et CSS en utilisant Python.
Minifpy utilise un fichier de configuration JSON très simple pour définir quels fichiers doivent être fusionnés, réduits ou non:
{
"js": {
"minify_files": [
{"from": "static/file.js", "to":"static/file.min.js"},
],
"merge_files": [
{"from" : ["static/file1.js", "static/file2.js"], "to":"static/public.js", "to_min": "static/public.min.js"}
]
},
"css" : {
"minify_files": [
{"from": "static/file.css", "to":"static/file.min.css"},
],
"merge_files": [
{"from" : ["static/file1.css", "static/file2.css"], "to":"static/public.css", "to_min": "static/public.min.css"}
]
}
}
Vous pouvez également utiliser cet outil en CLI.
Minifpy détecte toutes les modifications sur les fichiers JS / CSS et les fusionne / minimise automatiquement (utile pour le développement).