Table des matières
Qu'est-ce que l'API Fluent ?
Comment se passe la représentation ?
Maison interface Web js tutoriel JavaScript : maîtriser l'art des API Fluent

JavaScript : maîtriser l'art des API Fluent

Sep 04, 2023 am 08:09 AM

Lors de la conception de Babylon.js v2.0 (un bibliothèque pour créer de la 3D sur le Web), je me suis récemment retrouvé à souhaiter plus L'API est smooth - cela dit, je veux qu'elle soit plus facile à lire pour la communauté, Comprenez et développez votre travail tout en consacrant moins de temps à la documentation technique.

Dans ce tutoriel, je couvrirai les API fluides : ce qu'il faut considérer, comment Leur écriture et leur impact sur les performances entre navigateurs.

Qu'est-ce que l'API Fluent ?

JavaScript:掌握流畅 API 的艺术

L'API fluide, telle que décrite dans cet article Wikipédia, est API orientée objet conçue pour fournir un code plus lisible. JQuery est un excellent exemple de ce qu'une API fluide vous permet de faire :

 $('<div></div>')

     .html("Fluent API are cool!")

     .addClass("header")

     .appendTo("body");
Copier après la connexion

L'API Smooth vous permet de créer des liens La fonction est appelée en renvoyant cet objet.

Nous pouvons facilement en créer un API fluide comme celle-ci : 

var MyClass = function(a) {

    this.a = a;

}



MyClass.prototype.foo = function(b) {

    // Do some complex work   

    this.a += Math.cos(b);

    return this;

}
Copier après la connexion

Comme vous pouvez le constater, l'astuce Renvoie simplement l'objet this (faisant référence à l'instance actuelle dans ce cas) pour permettre à la chaîne de continuer.

Si vous ne savez pas Comment fonctionne le mot-clé "this" en JavaScript, je vous recommande de lire cet excellent article Auteur de l'article : Mike West.

Ensuite on peut enchaîner les appels :

var obj = new MyClass(5);

obj.foo(1).foo(2).foo(3);
Copier après la connexion

Avant d'essayer de faire ce qui suit Comme Babylon.js, je veux m'assurer que cela ne génère pas de Problèmes de performances.

Comment se passe la représentation ?

J'ai donc fait un test de benchmark !

var count = 10000000;



var MyClass = function(a) {

    this.a = a;

}



MyClass.prototype.foo = function(b) {

    // Do some complex work   

    this.a += Math.cos(b);

    return this;

}



MyClass.prototype.foo2 = function (b) {

    // Do some complex work   

    this.a += Math.cos(b);

}



var start = new Date().getTime();

var obj = new MyClass(5);

obj.foo(1).foo(2).foo(3);

for (var index = 0; index < count; index++) {

    obj.foo(1).foo(2).foo(3);

}

var end = new Date().getTime();



var start2 = new Date().getTime();

var obj2 = new MyClass(5);

for (var index = 0; index < count; index++) {

    obj2.foo2(1);

    obj2.foo2(2);

    obj2.foo2(3);

}

var end2 = new Date().getTime();



var div = document.getElementById("results");



div.innerHTML += obj.a + ": With return this: " + (end - start) + "ms<BR>";

div.innerHTML += obj2.a + ": Without return this: " + (end2 - start2) + "ms";
Copier après la connexion

comme Vous pouvez voir que foofoo2 fait exactement la même chose. seulement La différence est que foo 可以链接,而 foo2 ne peut pas.

Évidemment la chaîne d'appel La différence est :

obj.foo(1).foo(2).foo(3);
Copier après la connexion

et

obj2.foo2(1);

obj2.foo2(2);

obj2.foo2(3);
Copier après la connexion

Compte tenu de ce code, je l'ai exécuté Découvrez si je m'en soucie sur Chrome, Firefox et IE performance.

JavaScript:掌握流畅 API 的艺术

Voici le résultat J'obtiens :

  • Sur Chrome, l'API standard est 6% plus lente que l'API Fluent.
  • Sur Firefox, Les deux API fonctionnent presque de la même manière (API Fluent plus lente 1%).
  • Sur IE, Les deux API fonctionnent presque de la même manière (l'API Fluent est 2 % plus lente).

Le problème c'est que j'ai ajouté une opération dans la fonction (Math.cos) Simule une sorte de traitement effectué par une fonction.

Si je supprime tout Gardez simplement la déclaration return, cela ne fonctionne pas sur tous les navigateurs La différence (en fait seulement une à deux millisecondes sur 10 000 000 de tentatives). toi Vous pouvez le tester vous-même sur tous les navigateurs. si tu n'as pas L'appareil est pratique et il existe de nombreux outils gratuits sur dev.modern.IE. N'effectuez simplement pas de tests de performances sur les machines virtuelles Pour les vrais appareils.

Ma conclusion est donc la suivante : allez!

L'API fluide est géniale : elle produit un code plus lisible et vous pouvez l'utiliser sans aucun problème ni perte de performances !

Plus de pratique JavaScript

Cela peut vous surprendre un peu, mais Microsoft Il existe de nombreux contenus d'apprentissage gratuits sur de nombreux sujets JavaScript open source, et nous sommes Avec l'arrivée de Microsoft Edge, notre mission est de créer davantage. Découvrez le mien :

  • Introduction à la 3D avec HTML5 et WebGL Babylon.JS
  • Créez une application d'une seule page à l'aide des commandes suivantes ASP.NET et AngularJS
  • Graphiques de pointe en HTML

Ou la série d'apprentissage de notre équipe :

  • Conseils de performance pratiques pour rendre votre HTML/JavaScript Faster (une série en sept parties allant du design réactif au Jeux occasionnels à l'optimisation des performances)
  • Démarrage rapide avec les plates-formes réseau modernes (bases) HTML, CSS et JavaScript)
  • Développer des applications Windows universelles HTML et JavaScript Jump Start (en utilisant le JS que vous avez déjà créé) Créer une application)

Plus quelques outils gratuits : Visual Studio Community, Azure Trial et des outils de test multi-navigateurs pour Mac, Linux ou Windows Fenêtres.

Cet article fait partie de la technologie de développement Web Série de Microsoft. Nous sommes ravis de partager avec vous Microsoft Edge et le nouveau EdgeHTML moteur de rendu. gratuit Machine virtuelle ou tests à distance sur appareils Mac, iOS, Android ou Windows @http://dev.modern.ie/.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Créez vos propres applications Web Ajax Créez vos propres applications Web Ajax Mar 09, 2025 am 12:11 AM

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Effets de la matrice jQuery Effets de la matrice jQuery Mar 10, 2025 am 12:52 AM

Apportez des effets de film de matrice à votre page! Ceci est un plugin jQuery cool basé sur le célèbre film "The Matrix". Le plugin simule les effets de caractère vert classique dans le film, et sélectionnez simplement une image et le plugin le convertira en une image de style matrice remplie de caractères numériques. Venez et essayez, c'est très intéressant! Comment ça marche Le plugin charge l'image sur la toile et lit le pixel et les valeurs de couleur: data = ctx.getImagedata (x, y, settings.grainsize, settings.grainsize) .data Le plugin lit intelligemment la zone rectangulaire de l'image et utilise jQuery pour calculer la couleur moyenne de chaque zone. Ensuite, utilisez

Comment construire un simple curseur jQuery Comment construire un simple curseur jQuery Mar 11, 2025 am 12:19 AM

Cet article vous guidera pour créer un carrousel d'image simple à l'aide de la bibliothèque JQuery. Nous utiliserons la bibliothèque BXSLider, qui est construite sur jQuery et offre de nombreuses options de configuration pour configurer le carrousel. De nos jours, Picture Carrousel est devenue une fonctionnalité incontournable sur le site Web - une image vaut mieux que mille mots! Après avoir décidé d'utiliser le carrousel d'image, la question suivante est de savoir comment la créer. Tout d'abord, vous devez collecter des images de haute qualité et haute résolution. Ensuite, vous devez créer un carrousel d'image en utilisant HTML et un code JavaScript. Il existe de nombreuses bibliothèques sur le Web qui peuvent vous aider à créer des carrousels de différentes manières. Nous utiliserons la bibliothèque BXSLider open source. La bibliothèque Bxslider prend en charge la conception réactive, de sorte que le carrousel construit avec cette bibliothèque peut être adapté à n'importe quel

Comment télécharger et télécharger des fichiers CSV avec Angular Comment télécharger et télécharger des fichiers CSV avec Angular Mar 10, 2025 am 01:01 AM

Les ensembles de données sont extrêmement essentiels pour créer des modèles d'API et divers processus métier. C'est pourquoi l'importation et l'exportation de CSV sont une fonctionnalité souvent nécessaire. Dans ce tutoriel, vous apprendrez à télécharger et à importer un fichier CSV dans un

See all articles