Aurelia qui fût sûrement le meilleur framework SPA / PWA que j'ai pu utiliser durant la décennie passée, va bientôt sortir sa très attendue V2. Nous sommes à cette heure à 80 tickets de la fin ; dont une trentaine bloquant pour la release.
La V1 du framework a été maintenue depuis 2015 et a reçu sa dernière update pas plus tard qu'en avril dernier. La V2 est en développement depuis 2 ans, développement qui a été ralenti par le COVID.
J'ai vraiment hâte d'avoir cette V2 dans les mains. En ayant testé l'alpha-28 on peut constater que le bundle JS minimal passe de 355 Ko à à 151 Ko (rappel : 660 Ko pour Angular 12). Les performances à l'exécution ont été décuplées pour être comparable à celle d'Inferno (une implémentation communautaire qui reprend les mêmes API que React) et Vanilla JS.
Je dirais qu'essayer Aurelia c'est l'adopter et je ne peux donc que vous le conseiller.
Il y a plusieurs façons de faire, mais lorsqu'il s'agit de remplir un placeholder d'un input text, cette méthode marche plutôt bien :
<input type="text" i18n="[placeholder]my-i18n-key" />
L'attribut qui se fera injecter le i18n doit être mis entre crochet [ ]
et s'il y en a plusieurs, alors ils doivent être séparés par des virgules s'ils possèdent la même valeur ; ou par des points-virgules s'ils possèdent chacun une valeur différente.
Par exemple :
<!-- Les deux attributs posséderont la même valeur i18n -->
<input type="text" i18n="[placeholder,aria-placeholder]my-i18n-key" />
<!-- Chaque attribut possédera sa propre valeur i18n -->
<input type="text" i18n="[placeholder]my-i18n-key;[aria-placeholder]my-other-i18n-key" />
Aurelia est un framework à la fois simple et élégant.
Aurelia est un framework orienté SPA plus rapide que React ou Angular sur quasiment tous les modes de rafraîchissement du DOM. Ici Jeremy Danyow tient un podcast où il explique les bases des mécanismes de binding du framework.
@Chlouchloutte si tu recherches des snippets de code je te recommande d'aller sur le GitHub d'Aurelia dédié aux benchmarks des différents mécanismes de mise à jour du DOM mais j'ai l'impression que le podcast est la meilleure façon de tout comprendre (1h par contre, désolée).
Comment configurer et améliorer le build d'une application Aurelia via le plugin aurelia-webpack-plugin ?
Pour tout vous dire et sans trop forcer hier soir, en reparamétrant le build d'un des projets de @Lenny et @Kysofer, la taille du bundle JS s'est réduite de 12,8% et au vu de mes tests, nous devrions êtres en mesure de récupérer 15% à 20% de plus.
Cela fait de nos SPA que leurs pages d'accueil ne dépassent jamais les 685 Ko tout compris (ie. HTML + JS + CSS + IMG + FONTS) et moins de 180 Ko en utilisant une compression Gzip sur les fichiers statiques.
En ajoutant à cela un cycle de release non continu pour ne pas perdre les bénéfices de la mise en cache côté navigateurs, nous nous retrouvons avec une page de garde ne requérant plus que 3,6 Ko à télécharger lors de la seconde connexion et des suivantes.
Essayez d'en faire autant avec Angular et Bootstrap ! Je maintiens que le combo TypeScript + SCSS + Aurelia + Bulma + Karla Fonts + Font Awesome + TinyPNG est le plus efficace. J'ai vraiment hâte de passer à Aurelia 2 en 2020 !!! ٩(◕‿◕。)۶
Today, we're excited to announce the beta of Aurelia's Web Components plugin, enabling you to use your Aurelia custom elements as Web Component standard custom elements, easily inter-operating with other frameworks.
Nous en parlions avec @Chlouchloutte vendredi. Aurelia s'oriente peu à peu vers de l'a-p-i-fication. C'est très bien !
Learn how to setup a small TypeScript project and debug it with VS Code.
Je vais voir pour intégrer cela à mon build Aurelia. Le mode debug est ce qu'il nous manque le plus côté front.
Edit 2 : bon aurelia-bundler ne peut fonctionner qu'avec JSPM qui dépend de SystemJS. Or la liste des dépendances de JSPM se trouvent dans un fichier s'appelant config.js... M'voilà. J'abandonne et je reste sur le build Aurelia/Webpack.
Ça me saoule car j'espérais vraiment mettre en place un build plus simple, voire de créer un plugin Aurelia pour Brunch mais c'est trop long, trop de choses à maîtriser, trop de trucs qui changes tout le temps, trop de hypsters s'imaginant fournir la nouvelle techno de demain et qui préfèrent ne pas apporter leur soutien à un projet existant (car ils recherchent la gloire et non l'émancipation du système tout marchand). Le problème avec JS, ce sont les gens qui codent en JS pour JS.
Edit : après avoir testé, le tuto ne fonctionne pas (comme quasiment tous les tutos avec Aurelia). J'ai l'impression que le aurelia-bundler ne fonctionne qu'avec JSPM. Mon problème avec ça ? C'est que j'ai déjà un gestionnaire de paquet intégré à mon outil de build et que ce gestionnaire s'appelle NPM ! D'autant que JSPM est un utilitaire qui n'a jamais décollé et ça n'est pas près d'arriver !
Plus j'utilise Aurelia et plus que je trouve ce framework est merdicimale juste à cause du build ! L'utilitaire au aka aurelia-cli passe son temps à réinventer la roue et à tout faire pour surcharger la conf standard d'outils connus, documentés et maîtrisés comme le sont Gulp, NPM. Pourquoi faut-il que les développeurs d'Aurelia utilisent toujours la dernière techno-hype merdique qui n'a pas encore eu le temps de percer, c'est chiant à la fin ! Si encore ils s'étaient appuyés sur Brunch pour réutiliser quelque chose d'existant et de simple plutôt que de tout refaire à leur sauce en mode hypster-à-la-noix.
Le plus terrible c'est que la communauté derrière le framework Aurelia revendique qu'il est l'un des frameworks les plus respectueux des standards... Mais dès qu'il s'agit du build, ils sont encore pire qu'Angular c'est vous dire à quel point le niveau de médiocrité est ineffable.
Bref, je continue mes investigations en espérant comprendre par moi-même comment fonctionne le aurelia-bundler et surtout à quoi sert ce foutu fichier config.js (je pressens qu'il a un lien avec JSPM, auquel cas je sens que je vais hurler car je fais tout mon possible pour avoir un build 100% Gulp + NPM et rien d'autre).
Comment utiliser l'API du aurelia-bundler directement dans Gulp et s'éviter Webpack ?
Je me permets d'ajouter un truc qui me frustre avec Aurelia : c'est un framework à la Spring ou à la JEE qui se prétend modulaire mais où chaque élément de la couche supérieure va tirer un élément de la couche inférieure.
Essayez de remplacer la DI de Spring, Aurelia ou Angular par une autre pour voir. C'est juste impossible, car le couplage entre les modules y est total ! #DesignDeNoob
Mais en vérité cette "erreur de design" arrange bien son fabriquant puisqu'il rend le développeur captif du framework et lui évite d'aller prendre une lib chez la concurrence. #PorteOuverteVersLesAutres
Ma décision pour 2019, trouver des micro-frameworks, indépendants, interchangeables et légers, pour le front, à l'image de ce que sont Sparkjava (web serveur REST), ActiveJDBC (ORM), Feather-java (DI) ou encore Jsoniter (conversion entity-json) pour le back sur JVM.
The third quarter of 2018 was filled with major advances in our vNext Aurelia implementation along with a few cool new updates in today's Aurelia. Read on to hear about what we've accomplished and what's next as we round out 2018 and head into 2019.
Je suis Aurelia vNext de près. La 2.0 sort dans deux mois :)
La code base du framework Aurelia est en train d'être réécrite depuis quelques mois à présent. Cela constituera la première version cassant la compatibilité d'Aurelia en 4 ans ! (coucou Angular, tu pourrais faire pareil steuplé).
J'ai vraiment hâte, d'autant que cette nouvelle version :
- Pèse déjà moitié moins que la précédente
- Intègre un compilateur JIT
Il ne manquerait plus qu'un plugin de type brunch et le tour serait joué !
Je viens de me rendre compte que tu étais envoyée par Google !
Merci pour tes tutos sur Aurelia et SpringBoot. Cela va m'être très utile.
Comment mixer AureliaJS et ThreeJS dans un même projet. Pour toi Lenny, je sais que tu vas en avoir besoin.
Plein d'exemple de code (de convertisseurs notamment) écrit en Aurelia. Parfait pour se construire une codebase autour de ce framework.
Un tuto sur comment fonctionne la composition avec Aurelia. Il faut que j'approfondisse le sujet. Je relierai tout ceci à partir du 16 novembre... Pfiou, ça va être long.
Un démonstration d'injection de dépendance avec Aurelia.
export class Person {
static inject() {
return [Address, Phone];
}
}
Aurelia a un part marginale dans ce tuto. L'intérêt est de comprendre comment la conversion JSON => Entité fonctionne
Un tuto aurelia en français