Logo_jQuery

Actualités jQuery, 68ème billet

flattr this!

On commence la semaine avec la sortie de jQuery Mobile 1.1. Comme dit la semaine dernière, les principales innovations sont les barres d'outils fixes et les animations. Mais aussi le chargeur Ajax et la réécriture des formulaires ainsi qu'une documentation franchement retravaillée.

Afin d'aider à la portabilité de vos applications entre la version 1.0.x et 1.1, le ThemeRoller a été modifié pour supporter les deux (cliquer sur le bouton le plus à gauche de la barre d'outils). Comme dit aussi la semaine dernière, jQuery Mobile supporte toutes les versions récentes de jQuery jusqu'à la 1.7.1. Le support de la 1.7.2, nécessitant encore quelques tests, sera annoncé pour une prochaine release.

L'annonce a été faite comme d'habitude par Todd Parker qui en a aussi profité pour remercier (et citer) l'intégralité des contributeurs au projet. Le lien de l'annonce contient le détail complet sur lequel je reviendrai plus tard sur ce blog ainsi qu'une grille de compatibilité des terminaux mobiles, point sur lequel je reviendrai aussi.

Attention pour les utilisateurs de PhoneGap, il semblerait qu'il y ait quelques soucis de compatibilité.

Côté bonnes pratiques, Scott Gonzalez a livré quelques conseils sur la façon de créer un widget pour jQuery UI.

Scott qui nous a d'ailleurs écrit un très bon article (même si incorrect côté références historiques, cf mon commentaire de son billet) à propos de la difficulté d'aborder les interfaces tactiles.

Parlons plugins maintenant. Je ne vous présenterai pas un plugin en particulier mais un site. Je vous envoie régulièrement vers Megaptery qui fait du très bon boulot en présentant régulièrement des plugins de façon complète ou encore vers LaFermeDuWeb qui en remonte une liste imposante toutes les semaines. Ce coup-ci, je vous envoie chez jQuery Rain où une liste déjà longue de 900 plugins vous attendent. Il y a de quoi faire ;)

C'est tout pour cette semaine. On se revoit dans la semaine pour plus de détails à propos de jQuery Mobile.

flattr this!

A propos de Mathieu

Ingénieur développeur web dans la vente par correspondance B2B, adepte de nouvelles technologies et d'innovation. Vous pouvez aussi me retrouver sur Twitter @mathrobin
Cette entrée a été publiée dans jQuery, avec comme mot(s)-clef(s) , , , , , , , , , . Vous pouvez la mettre en favoris avec ce permalien.

9 réponses à Actualités jQuery, 68ème billet

  1. Gilles FELIX dit :

    La réponse de Scott Gonzalez sur le forum jQuery UI est vraiment très intéressante et en même temps très perturbante. La notion de variable d’instance ou de classe qui dépend si la variable est initialisée en objet ou non. Je me rappelle m’être bien pris la tête avec le $.extend qui n’est pas récursif par défaut, je pense que les deux sont liés ?
    D’un autre côté, Scott précise que cela vient de javascript et non pas du mécanisme de widget jQuery UI.

    Je suis preneur d’éclaircissements sur le sujet si y’a des candidats.

    • Mathieu dit :

      Je crois que tu as un souci de traduction là. L’utilisateur demandait si c’était une bonne pratique de mettre ses données « d’état » dans le prototype. Cependant, en JS, quand tu modifies la valeur d’un élément du prototype d’un objet, tu modifies toutes tes instances. Ce qui n’est pas idéal. Ça c’est le premier point.
      Ensuite, il rappelle que vu que les widgets sont par nature « closurés », toutes tes variables sont privées, ce qui permet la multiplicité des instances.
      Pour $.extend, tu as raison, par défaut, il n’est pas récursif, mais tu peux passer en premier paramètre, un booléen. Si tu passes true, $.extend devient récursif. Ceci dit, ceci n’est pas lié au problème principal.

  2. Gilles FELIX dit :

    Merci pour ta réponse Matthieu
    Je commence par la fin, pour extend, oui il y a le true en premier paramètre, mais c’est pas la valeur par défaut. Du coup, quand on fait un extend pour cloner un objet, on comprend pas tout de suite pourquoi une des variables de l’objet cloné est modifié quand l’objet initial est modifié. C’est perturbant, mais c’est logique. La « confuse » vient souvent de l’utilisation des objets JS comme des tableaux indexés.

    Pour en revenir à la question des bonnes pratiques jQuery UI, c’est fort possible que j’ai loupé un truc dans ma trad, n’étant pas un « killer » en anglais.
    Mais dans la question initial, le gars écrit
    _state: { // Q#1 – instance state variables (indended to be private to each instance)
    var1: false,
    var2: true
    // …
    },
    Et sur ce point Scott répond : « 1) Do not put objects in your prototypes; they’ll get shared across all instances. Your entire instance is the state, just store properties directly on the instance. »

    Par contre quand le gars écrit ensuite dans sont cas 2A
    $.widget(« myNameSpace.myWidget », {
    _varSharedByAllInstances: ‘value’,
    Scott répond : « 2a) No, that property’s value is a string, not an object and therefore is not shared across all instances. Only arrays and objects will be shared. Again, this is about JavaScript the language, not jQuery UI and the widget factory. »

    Il me semble bien qu’en résumé ça veut dire qu’une propriété du prototype est partagée entre toutes les instances si c’est un objet alors qu’elle est propre à l’instance dans les autres cas ? Et cela tient au langage et non à jQuery UI.
    C’est pas ça ?

    • Mathieu dit :

      Si si c’est ça. Le prototype est partagé entre toutes les instances, c’est le principe même de ce qu’il est. Alors que la valeur d’une variable privée est liée uniquement à l’instance concernée. Donc oui, c’est lié au langage. Ceci dit, il faut de sacrés bonnes raisons pour vouloir toucher au prototype. Perso, je ne recommande que rarement de le faire.

  3. Pierre dit :

    Merci pour la citation, Mathieu ;-)

  4. molokoloko dit :

    $.extend(true, {}, obj1, obj2);

    … Pour cloner et fusionner plusieurs objets récursivement :)

  5. Mathieu dit :

    Correction suite au tweet de David Fellous : jQuery Mobile 1.1 est compatible avec jQuery 1.7.1. Et non pas : « jQuery Mobile 1.1 est compatible avec jQuery Mobile 1.7.1″

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Articles liés