Maison > interface Web > js tutoriel > Explication détaillée et partage d'exemples des compétences d'utilisation_javascript de yepnope.js

Explication détaillée et partage d'exemples des compétences d'utilisation_javascript de yepnope.js

WBOY
Libérer: 2016-05-16 16:43:32
original
1601 Les gens l'ont consulté

Un exemple typique de yepnope.js :

yepnope({
 test : Modernizr.geolocation,
 yep : 'normal.js',
 nope : ['polyfill.js', 'wrapper.js']
});
Copier après la connexion

Cet exemple signifie que si Modernizr.geolocation est vrai, normal.js est chargé, et s'il est faux, polyfill.js et wrapper.js sont chargés.

oui, syntaxe complète  :

yepnope([{
 test : /* boolean(ish) 输入条件    */,
 yep : /* array (of strings) | string - 条件为真时加载的资源 */,
 nope : /* array (of strings) | string - 条件为假时加载的资源 */,
 both : /* array (of strings) | string - 条件无论真假都加载 */,
 load : /* array (of strings) | string - 条件无论真假都加载 */,
 callback : /* function ( testResult, key ) | object { key : fn } 回调函数 */,
 complete : /* function 加载完成后执行的函数 */
}, ... ]);
Copier après la connexion

Pourquoi utiliser yepnope :

Seulement 1,6 Ko après Gzip, ce qui est plus petit que la plupart des chargeurs de ressources
Peut charger CSS et JS
ouais, a réussi tous les tests de navigateur que l'auteur a pu trouver
yepnope sépare complètement le chargement et l'exécution des ressources, vous pouvez donc contrôler l'ordre d'exécution des ressources
Fournissez une API conviviale et favorisez une combinaison logique de ressources
Conception modulaire, vous pouvez étendre les fonctions vous-même (voir Préfixes et filtres plus tard)
Encouragez le chargement des ressources à la demande
Intégré dans Modernizr
Par défaut, il est toujours exécuté dans l'ordre de la liste des ressources (l'ordre de la liste des fichiers que vous fournissez)
Il peut gérer le repli des ressources tout en donnant la priorité au téléchargement de scripts dépendants en parallèle. C'est plus facile à comprendre si vous regardez le code :

.
yepnope([
 {
  load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',
  complete: function () {
   if ( ! window.jQuery ) {
    yepnope( 'local/jquery.min.js' );
   }
  }
 },
 {
  load : 'jquery.plugin.js',
  complete: function () {
   jQuery(function () {
    jQuery( 'div' ).plugin();
   });
  }
 }
]);
Copier après la connexion

D'autres chargeurs devront peut-être faire ceci :

someLoader('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js', function(){
 if ( ! window.jQuery ) {
  someLoader( 'local/jquery.min.js', 'jquery.plugin.js' );
 /*注意这点和yepnope的区别,yepnope加载失败后仅需重新加载备用资源即可,不会影响依赖此资源的其他文件执行*/
 } else {
  someLoader( 'jquery.plugin.js' );
 }
});
Copier après la connexion

Inconvénients du oui

Ce n'est pas toujours le plus rapide. Après optimisation, des choses comme labjs peuvent se charger plus rapidement que oui, mais vous devez déterminer quel chargeur utiliser en fonction de votre situation réelle
Vous devez définir un certain en-tête de cache pour la ressource (c'est très important)
Contrairement aux bibliothèques de classes telles que RequireJS qui disposent de leurs propres outils de génération et d'API riches, yepnope n'implémente que les fonctions de base du chargeur
Par défaut, il est toujours exécuté dans l'ordre de la liste de ressources que vous fournissez, ce qui peut affecter la vitesse

Exemples d'utilisation de oui non :

Passer directement dans la chaîne

yepnope( '/url/to/your/script.js' );
Copier après la connexion

Passer un objet

yepnope( {
   load : '/url/to/your/script.js'
   } );
Copier après la connexion

Instance de fonction de rappel (l'url dans la fonction de rappel représente le nom du fichier de ressources chargé ; le résultat représente le résultat du paramètre de test ; la clé représente l'abréviation du nom de fichier lors de l'utilisation du mappage de touches)

yepnope( {
  test : window.JSON,
  load : '/url/to/your/script.js',
  callback : function ( url, result, key ) {
   // whenever this runs, your script has just executed.
   alert( 'script.js has loaded!' );
  }
 } );
Copier après la connexion

instance de fonction complète

yepnope( {
  test : window.JSON,
  nope : 'json2.js',
  complete : function () {
   var data = window.JSON.parse( '{ "json" : "string" }' );
  }
 } );
Copier après la connexion

Exemple de mappage de touches

yepnope( {
  test : Modernizr.geolocation,
  yep : {
   'rstyles' : 'regular-styles.css'
  },
  nope : {
   'mstyles' : 'modified-styles.css',
   'geopoly' : 'geolocation-polyfill.js'
  },
  callback : function ( url, result, key ) {
   if ( key === 'geopoly' ) {
    alert( 'This is the geolocation polyfill!' );
   }
  }
 } );
Copier après la connexion

Bien sûrFonction de rappelVous pouvez aussi écrire comme ceci :

yepnope( {
  test : Modernizr.geolocation,
  yep : {
   'rstyles' : 'regular-styles.css'
  },
  nope : {
   'mstyles' : 'modified-styles.css',
   'geopoly' : 'geolocation-polyfill.js'
  },
  callback : {
   'rstyles' : function ( url, result, key ) {
    alert( 'This is the regular styles!' );
   },
   'mstyles' : function ( url, result, key ) {
    alert( 'This is the modified styles!' );
   },
   'geopoly' : function ( url, result, key ) {
    alert( 'This is the geolocation polyfill!' );
   }
  },
  complete : function () {
   alert( 'Everything has loaded in this test object!' );
  }
 } );
Copier après la connexion

3 préfixes officiellement fournis par yepnope

Préfixe css : les fichiers avec n'importe quel suffixe peuvent être chargés sous forme de fichiers CSS

yepnope( 'css!mystyles.php?version=1532' );
Copier après la connexion

preload ! Préfixe : Préchargez la ressource dans le cache, mais ne l'exécutez pas (elle ne sera exécutée qu'au prochain chargement)

yepnope( {
 load : 'preload!jquery.1.5.0.js',
 callback : function ( url, result, key ) {
  window.jQuery; //undefined
  yepnope(jquery.1.5.0.js);
  window.jQuery; //object
 }
} );
Copier après la connexion

Préfixe(s) ie! : Déterminez s'il s'agit d'un navigateur IE (en plus de ie!, il prend également en charge ie5, ie6, ie7, ie8, ie9, iegt5, iegt6, iegt7, iegt8, ielt7, ielt8 et ielt9 (ces types de préfixe)

yepnope({
 load: ['normal.js', 'ie6!ie7!ie-patch.js'] // ie6 or ie7 only (on patch)
});
Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal