J'ai un projet avec 6 vues (html). Chacune de ces vues a un modèle de vue correspondant (.js) et une feuille de style juste pour cette vue (.css)
L'aurelia-cli fait un travail merveilleux de recourir à mon fichier gratuitement et de regrouper tous les fichiers .js et .cs dans quelques fichiers afin qu'ils puissent être référencés tout en réduisant les temps de chargement et la taille des pages. Donc, si j'ai un dossier de bienvenue avec welcome.html, welcome.js et welcome.css, je peux charger le CSS pour welcome.html avec le <require from="./welcome.css"></require>
et Le CSS sera injecté dans les balises <head></head>
sur le chargement de la page.
Le problème est que lorsque je navigue vers la prochaine vue, les règles CSS de welcome.html / welcome.css sont encore dans la <head>
de la page Web, ce qui est toujours appliqué. Après avoir visité toutes les 6 vues dans ma application, j'ai maintenant 6 balises <style>
dans la <head>
avec toutes les règles des six pages appliquées sur chaque page que je vais sans déchargement jusqu'à ce que la page soit actualisée. Inutile de dire qu'après avoir visité quelques pages, le site entier se confond les ordures.
Donc, mes questions sont
Si j'avais une application de 10 pages avec une feuille de style globale, bootstrap, animé css et police impressionnante, à la fin de la journée j'ai 14 styles contradictoires injectés en permanence dans le html dans lequel le reste de l'application est injecté.
Aucune suggestion? Merci pour la lecture.
Après avoir fait face à des situations similaires, en expérimentant pendant de longues heures, je suis arrivé à une conclusion simple: je n'aime pas cette approche «injecter des fichiers CSS partout». Permettez-moi un peu de problème, s'il vous plaît. 🙂
Quel est l'avantage de cela?
index.html
. Bien sûr, car nous aimerions avoir un bon éclaboussement avant que l'application ne se charge elle-même. Même dans l'application officielle de navigation de squelette <require>
est sa nature asynchrone, ce qui nous donne peu ou pas de contrôle sur l' ordre de chargement CSS . C'est parfait pour les modules JS / éléments personnalisés, mais pas pour plusieurs fichiers CSS. <require>
placées dans chaque vue, juste pour rendre notre situation déjà «simple» encore plus «simple». Alors, ne serait-il pas plus facile d'emballer le reste des feuilles de style de l'application dans cette feuille de style globale déjà existante, dans un ordre explicite?
Ma proposition
Aurelia-cli a une fonctionnalité exceptionnelle, appelée générateurs . Vous pouvez étendre ses fonctionnalités, comme vous le souhaitez. Dans cet esprit, vous pouvez créer de nouvelles tâches pour le pré-traitement après traitement CSS et les insérer dans le processus de construction.
J'ai créé un petit projet il y a plusieurs jours, qui traite également de ce problème: aurelia-custom-skeleton . Démonstration de travail ici .
base.css
partir de dépôts mondiaux et une app.css
de fichiers CSS personnalisés. Ceci est à des fins de débogage. styles.min.css
, qui est déployé et référencé dans index.html
.