IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Meteor 0.8 : Blaze, le nouveau moteur de templating en live


Sujet :

NodeJS

  1. #1
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Meteor 0.8 : Blaze, le nouveau moteur de templating en live
    Meteor 0.8 : Blaze, le nouveau moteur de templating en live
    La plate-forme JavaScript pour créer des applications Web approche de sa version 1.0


    Meteor est une plate-forme open source pour créer des applications Web de qualité et cela très rapidement, peu importe que vous soyez un expert développeur ou bien un débutant. Avec Meteor, vous n'avez plus à gérer les ressources serveur ou une base de données, ni à manipuler une couche ORM (couche d'abstraction à la base de données), ni à organiser le va-et-vient entre clients et serveur en cas de données invalides.

    En voici plusieurs caractéristiques :

    • écrire son application entièrement en JavaScript. Les mêmes API sont disponibles sur le client et sur le serveur donc le même code peut être exécuté facilement dans l'environnement ;
    • écrire simplement ses modèles. Ils se mettent à jour automatiquement lorsqu'il y a des modifications de données dans la base de données. L'outil prend en charge n'importe quel langage de création de modèles ;
    • écrire son code client comme s'il était en cours d'exécution sur le serveur et avec un accès direct à la base de données ;
    • lorsqu'un utilisateur apporte une modification, son écran se met à jour immédiatement, il n'y a pas d'attente serveur. Si le serveur rejette la demande ou s'il l'exécute différemment, le client se reconstitue avec ce qui s'est réellement passé ;
    • mettre à jour votre application pendant que les utilisateurs sont connectés sans les déranger. Lorsque vous publiez une nouvelle version, le nouveau code est parfaitement injecté dans chaque fenêtre du navigateur dans laquelle l'application est ouverte ;
    • écrivez tout le code en JavaScript (si vous le souhaitez). L'interface utilisateur s'exécute dans votre navigateur. Les fonctions sensibles sont exécutées dans un environnement privilégié ;
    • une seule commande pour compiler votre application entière dans une archive tar. A décompresser n'importe où où se trouve node.js en une seule commande également ;
    • vous pouvez connecter tout ce que vous voulez à Meteor, des applications mobiles natives aux bases de données de Arduinos (une plate-forme de prototypage électronique open source qui permet de créer des objets électroniques interactifs). Il suffit d'implémenter le protocole DDP ;
    • les packages Smart Meteor sont de petits programmes qui peuvent injecter du code dans le serveur ou le client, ou même pré traiter vos sources. C'est pourquoi ils sont les plus petits possible, avec un ensemble de dépendances minimal. Vous pouvez ainsi utiliser vos modèles, vos jeux de tests ou vos frameworks de manipulation du DOM préférés.


    L'équipe a annoncé la sortie de la version 0.8.0.

    Elle ne contient à vrai dire qu'une seule nouveauté donc si vous aviez déjà utilisé la révision précédente (0.7.2), vous pouvez mettre à jour votre code sans problème (sauf si vous utilisiez Spark). Cette nouveauté, c'est Blaze, la nouvelle génération du moteur de templating en live.

    Blaze transforme des modèles HTML en éléments du DOM pouvant être mis à jour en direct. Lorsqu'un utilisateur modifie les données ou bien que de nouvelles données arrivent sur le réseau et qu'elles dépendent d'un modèle, Blaze met à jour votre écran automatiquement. Sa manière de faire est différente des précédentes versions du moteur Spark.

    Voici quelques caractéristiques :

    • simple d'utilisation pour le développeur qui crée des templates HTML tout à fait normaux ;
    • les mises à jours sont les plus minimalistes possible afin d'améliorer les performances. Seul le nécessaire est rafraîchi ;
    • ce moteur est compatible avec les autres codes qui manipulent le DOM et les CSS comme par exemple un plugin jQuery ;
    • vous pouvez inclure du SVG à côté ou dans votre template HTML, le code sera correctement interprété ;
    • le moteur est divisé en deux parties. La première est un compilateur qui traduit le template en code JavaScript. La seconde est une API qui restitue les éléments et qui assure le suivi de leurs dépendances et donc des mises à jours ;
    • etc.


    Blaze est une nouvelle étape importante pour la plateforme qui continue son avancée vers sa version 1.0.


    Site officiel.
    L'article sur la version 0.8.0.
    Exemples et documentation.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Les moteurs de templating des grands frameworks JavaScript semblent tous migrer progressivement du String based au DOM-based : avec à la clé moins d'opérations sur le DOM pour des opérations mineures, donc un templating plus fin et plus intelligent tout en étant plus rapide ; quitte à restreindre un peu la flexibilité de la syntaxe (ce qui n'est pas forcément un mal)

    AngularJS, KnockoutJS, Ractive et aujourd'hui Meteor font du data-binding DOM-based. Ember va bientôt passer le cap avec HTMLBars, une version pseudo-DOM-based de Handlebars.

    En parallèle, un article vient récemment d'être publié décriant le templating String-based comme néfaste : http://flippinawesome.org/2014/03/24...dered-harmful/

    Je me réjouis de cette évolution pour trois raisons :
    • on s'éloigne de plus en plus du templating brouillon PHP/JSP où le gap client-serveur entraînait de-facto une rupture entre le modèle de données et le DOM généré
    • cela va encourager le passage de modèles de données côté client ; les avantages à en tirer sont indéniables : requêtes plus légères (JSON au lieu de HTML), possible mode hors-ligne, mise à jour des vues sans attendre les réponses serveur...
    • le templating DOM-based se prête très bien aux animations SVG : une technologie avec un énorme potentiel et pourtant assez sous-exploitée aujourd'hui. On va peut-être voir un regain d'intérêt maintenant que la liaison au modèle de données peut se faire côté template plutôt que par d'obscurs passages de paramètres en JS comme on le ferait pour un rendu canvas.


    Si vous souhaitez passer dès aujourd'hui à une bibliothèque de templating DOM-based sans embarquer tout un framework avec, Ractive ou RivetsJS sont de bons choix.

    Je travaille aussi sur ma propre bibliothèque, avec comme objectif une solution plus légère, plus simple et moins permissive que les autres solutions actuelles. J'espère pouvoir la publier sur dvpz.com d'ici le mois de mai.
    One Web to rule them all

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 18
    Points
    18
    Par défaut
    Quid du SEO avec cette approche ?
    Derby se débrouille bien de ce côté

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Oui, c'est le problème majeur du templating client: les bots d'indexation et de manière plus générale les clients avec JavaScript désactivé. Google travaille sur des spécifications pour l'indexation des sites ajax-driven, mais ça implique à l'heure actuelle beaucoup de boulot et de règles à respecter pour les développeurs : https://developers.google.com/webmas...etting-started

    La solution la plus élégante que je connaisse, bien qu'elle soit complexe et coûteuse, est de faire tourner un navigateur headless côté serveur qui vienne interpréter le JavaScript et envoyer le HTML produit aux clients avec JS désactivé. PhantomJS ou Rhino sont les deux navigateurs headless les plus connus. Cette version JS-disabled est envoyée soit après user agent sniffing (typiquement, les User Agent des Google Bots), soit via une redirection cachée dans une balise noscript dans la version "normale" :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <noscript>
    <meta http-equiv="refresh" content="1; url=http://monsite.com/?js=no" />
    </noscript>

    Si on veut retrouver un fonctionnel complet avec JS désactivé, il faut que tout le contenu généré par JavaScript soit déterminé par des URLs et paramètres d'URL spécifiques. Quand on commence à utiliser à tour de bras le data-binding, ça devient rapidement mission impossible. En pratique, je pense que la plupart des sites utilisant cette technique ont laissé tomber et se contentent de donner à manger du contenu Search-Engine-Optimized aux bots des moteurs de recherche ; tandis que les utilisateurs avec JS désactivé sont gentiment recalés avec un texte explicatif. Eh oui, ça représente moins d'1% des requêtes et dans ce petit pourcent, on trouve en majorité des navigateurs obsolètes ou ésotériques qu'aucun développeur sain d'esprit ne voudrait consacrer une journée de travail.
    One Web to rule them all

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Pour ma part, toutes ces plateformes de développement cloud c'est de la superbe arnaque. je ne sais pas pourquoi tout le monde reste muet et ne dénonce pas cela car tout ne peut pas être dans le cloud. Tout d'abord on n’oublie qu'il faut payer sa facture internet et ensuite comment est ton sûr de la confidentialité du projet que l'on développe sur une telle plateforme?

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Meteor offre un hébergement gratuit, mais il n'est pas du tout obligatoire : si tu as besoins plus spécifiques ou veux garder le contrôle de tes données, tu peux parfaitement utiliser Meteor sur ton propre serveur. Les serveurs de meteor.com servent davantage aux démos/expérimentations avant une utilisation réelle.
    One Web to rule them all

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Meteor 0.8.1 : des failles sont maintenant sécurisées
    Meteor 0.8.1 : des failles sont maintenant sécurisées


    Meteor est une plate-forme open source pour créer des applications Web de qualité et cela très rapidement, peu importe que vous soyez un expert développeur ou bien un débutant. Avec Meteor, vous n'avez plus à gérer les ressources serveur ou une base de données, ni à manipuler une couche ORM (couche d'abstraction à la base de données), ni à organiser le va-et-vient entre clients et serveur en cas de données invalides.

    L'équipe a annoncé la sortie de la révision 0.8.1.

    La révision contient pas mal d'adaptations. On y trouve notamment la mise à jour des dépendances telles que Node.js, MongoDb, ou css-parse. Elle comporte également d'autres changements comme :

    • une correction de sécurité importante pour le client OAuth (accessible en version 0.8.1 et 0.7.2.2) ;
    • la nouvelle commande meteor list-sites pour obtenir tous les sites qui ont été déployés avec votre compte Meteor ;
    • Blaze ne permet plus de mettre des attributs aux URL de type javasctipt: et ce pour une raison de sécurité également (attaques XSS) ;
    • la gestion automatique de la compensation de latence lorsque vous insérez plusieurs documents depuis une méthode ;
    • lorsqu'un utilisateur change de mot de passe, ses sessions actives sont fermées ;
    • des corrections sur UI.toHTML et {{#with}} ;
    • des améliorations sur le protocol DDP ;
    • la convertion d'URL relatives en URL absolues lorsque les fichiers CSS sont mergés ;
    • l'ajout d'un package oauth-encryption pour crypter dans la base de données les informations d'identification de comptes sensibles ;
    • etc.



    Site officiel.
    L'article sur la version 0.8.1.
    Exemples et documentation.

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Meteor 0.8.2 est disponible
    Meteor 0.8.2 est disponible


    Meteor est une plate-forme open source pour créer des applications Web de qualité et cela très rapidement, peu importe que vous soyez un expert développeur ou bien un débutant. Avec Meteor, vous n'avez plus à gérer les ressources serveur ou une base de données, ni à manipuler une couche ORM (couche d'abstraction à la base de données), ni à organiser le va-et-vient entre clients et serveur en cas de données invalides.

    L'équipe a annoncé la sortie de la révision 0.8.2.

    La révision contient un bon nombre d'améliorations et de corrections. Elle est d'ailleurs appelée potpourri sur le blog. On y retrouve par exemple :

    • l'utilisation de bcrypt pour sauvegarder les mots de passes sur le serveur de manière sécurisée ;
    • Blaze améliore sa gestion des règles CSS dans les attributs style envers les modifications faites par d'autres bibliothèques JavaScript ;
    • l'API {{> UI.dynamic }} qui permet d'inclure dynamiquement des templates ;
    • l'affichage du nom complet de l'utilisateur actuellement connecté après qu'il ait suivi un lien de vérification dans un email ou bien après une réinitialisation de mot de passe ;
    • on assurer que l'objet utilisateur a mis à jour les informations du token avant d'être transmis aux fonctions template pour les emails ;
    • la suppression de la redirection OAuth d'URL avec un paramètre redirect qui n'était pas vraiment utilisée ;
    • une correction au niveau du nettoyage de la mémoire ;
    • l'augmentation de la taille du buffer lors de l’interaction avec MongoDB ;
    • l'ajout d'un header content-type sur les ressources JavaScript et CSS ;
    • la mise à jour des dépendances : nodeJS, uglify-js, sockjs server, websocket-driver et stylus ;
    • etc.



    Site officiel.
    L'article sur la version 0.8.2.
    Exemples et documentation.

  9. #9
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Meteor 0.8.3 est disponible
    Meteor 0.8.3 est disponible


    Meteor est une plate-forme open source pour créer des applications Web de qualité et cela très rapidement, peu importe que vous soyez un expert développeur ou bien un débutant. Avec Meteor, vous n'avez plus à gérer les ressources serveur ou une base de données, ni à manipuler une couche ORM (couche d'abstraction à la base de données), ni à organiser le va-et-vient entre clients et serveur en cas de données invalides.

    L'équipe a annoncé la sortie de la révision 0.8.3.

    La révision contient des améliorations de performance et des corrections. Cela concerne également le projet Atmosphere, le catalogue des packages Meteor.

    On y retrouve par exemple :

    • la factorisation de Blaze pour simplifier les éléments internes tout en préservant l'API publique ;
    • la correction de perte de mémoire au niveau du gestionnaire d'événements ;
    • la méthode UI.remove qui supprime un template après UI.render ou UI.insert ;
    • la suppression de l'avertissement lorsque #{{each}} parcourt des listes avec des doublons ;
    • il y a eu une régression dans la version précédente avec Meteor.loginWithPassword et l'aspect optionnel du callback ;
    • la correction d'une erreur avec MongoDB 2.6 qui disait que l'e-mail existait déjà ;
    • sur le serveur, Meteor.startup(c) appelle directement c si le serveur est démarré ;
    • le passage à la version 1.7 de less (le pré-processeur CSS) ;
    • etc.



    Site officiel.
    L'article sur la version 0.8.3.
    Exemples et documentation.

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/03/2011, 16h33
  2. [Web] Nouveau moteur de recherche?
    Par newbie57 dans le forum La taverne du Club : Humour et divers
    Réponses: 7
    Dernier message: 14/01/2008, 00h11
  3. Nouveau moteur Mysql. PBXT
    Par berceker united dans le forum Requêtes
    Réponses: 8
    Dernier message: 12/03/2007, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo