jQuery Academy · Les

Ontwerppatronen en scoping voor plugins

Krijg inzicht in gangbare ontwerppatronen voor plugins, zoals de immediately invoked function expression (IIFE), en in best practices voor variabelenscoping om conflicten te voorkomen.

Les 1 van 311 stappen

Ontwerppatronen en scoping voor plugins is een gratis jQuery Academy-les op CoddyKit. Dit is les 1 van 3. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject jQuery Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus jQuery Academy bevat in totaal 3 lessen.

Wat zijn jQuery-plug-ins?

jQuery-plug-ins zijn kleine stukjes code die de mogelijkheden van jQuery uitbreiden, zodat je nieuwe methoden aan het object $.fn kunt toevoegen.

Ze helpen je herbruikbare functionaliteit te verpakken, waardoor je code modulairder, overzichtelijker en gemakkelijker te onderhouden wordt. Zie ze als aangepaste hulpmiddelen die je aan je jQuery-gereedschapskist toevoegt.

Waarom plug-ins gebruiken?

Plug-ins bieden verschillende voordelen:

  • Herbruikbaarheid: schrijf code één keer en gebruik deze overal.
  • Modulariteit: splits complexe functies op in kleinere, beheersbare onderdelen.
  • Inkapseling: houd de interne logica van je plug-in gescheiden van andere scripts.
  • Delen: deel je aangepaste functies eenvoudig met andere ontwikkelaars.

Basisstructuur van een plug-in (eerste versie)

Je kunt een heel eenvoudige plug-in maken door een functie aan $.fn toe te voegen. Deze aanpak heeft echter een groot nadeel: je code wordt niet beschermd tegen conflicten tussen globale variabelen.

Bekijk deze eenvoudige, niet-ingekapselde plug-in. Deze voegt mySimplePlugin rechtstreeks toe aan het prototype van jQuery:

$.fn.mySimplePlugin = function() {
  return this.each(function() {
    $(this).css("color", "blue");
  });
};

// Usage (assuming jQuery and HTML are loaded):
// $('p').mySimplePlugin();

Kennismaken met de IIFE

Een Immediately Invoked Function Expression (IIFE) is een JavaScript-functie die wordt uitgevoerd zodra deze is gedefinieerd. De functie creëert een private bereik voor zijn variabelen en functies, zodat deze de globale naamruimte niet vervuilen.

Dit is essentieel voor plug-ins om conflicten met andere scripts op een pagina te voorkomen.

(function() {
  var privateVar = "I'm private!";
  console.log(privateVar);
})();

// console.log(privateVar); // This would cause an error!

Het standaard-IIFE-patroon voor plug-ins

Het aanbevolen patroon voor jQuery-plug-ins gebruikt een IIFE die jQuery als argument ontvangt en dit een alias geeft als $. Zo verwijst $ binnen je plug-in altijd naar jQuery, zelfs als een andere bibliotheek (zoals Prototype.js) ook $ gebruikt.

(function($) {
  // Your plugin code goes here
  // $ now safely refers to jQuery

  $.fn.mySafePlugin = function() {
    return this.each(function() {
      $(this).text("Hello from safe plugin!");
    });
  };

})(jQuery); // Pass jQuery object to the IIFE

// Example usage after plugin definition:
// $('div').mySafePlugin();

Je eerste ingekapselde plug-in bouwen

Laten we een eenvoudige plug-in maken met het IIFE-patroon. Deze plug-in voegt een specifieke klasse toe aan geselecteerde elementen. Let erop dat alle variabelen en functies binnen de IIFE lokaal zijn.

Probeer dit voorbeeld uit te voeren:

(function($) {
  $.fn.highlightText = function() {
    return this.each(function() {
      // 'this' refers to the DOM element in .each()
      // $(this) wraps it into a jQuery object
      $(this).addClass('highlighted');
    });
  };
})(jQuery);

// Assume we have some HTML like:
// <p>This is some text.</p>
// <p>Another paragraph.</p>

// Now, let's use our plugin:
$('p').highlightText();

// This would make paragraphs have a 'highlighted' class.

'this' in plug-ins begrijpen

Binnen je plug-infunctie (bijvoorbeeld $.fn.myPlugin = function() { ... }) verwijst het sleutelwoord this naar het jQuery-object dat de plug-in heeft aangeroepen.

Als je met elk afzonderlijk DOM-element in de gevonden verzameling wilt werken, gebruik je this.each(function() { ... });. Binnen de callback van .each() verwijst this naar het huidige DOM-element.

(function($) {
  $.fn.showInfo = function() {
    console.log("Plugin called on: ", this.selector);
    return this.each(function() {
      // 'this' inside .each refers to the DOM element
      var elementTag = this.tagName;
      console.log("Processing element: ", elementTag);
      $(this).append(" <i>(processed)</i>");
    });
  };
})(jQuery);

// Example usage:
// Assume HTML: <p>Item 1</p><div>Item 2</div>
$('p, div').showInfo();

Lokaal bereik voor interne variabelen

Declareer binnen de IIFE van je plug-in alle hulpvariabelen of -functies met var, let of const. Zo blijven ze strikt lokaal voor je plug-in en voorkom je conflicten met andere scripts.

Dit is een aanbevolen werkwijze voor overzichtelijke code zonder conflicten.

(function($) {
  // This helper function is only visible inside this IIFE
  function getFormattedTime() {
    var now = new Date();
    return now.toLocaleTimeString();
  }

  $.fn.addTimestamp = function() {
    return this.each(function() {
      var timestamp = getFormattedTime(); // Call local helper
      $(this).append('<small> - ' + timestamp + '</small>');
    });
  };
})(jQuery);

// Example usage:
// Assume HTML: <p>Last updated:</p>
$('p').addTimestamp();

Lekken van globale variabelen voorkomen

Zonder een IIFE wordt elke variabele die rechtstreeks in het script wordt gedeclareerd (zonder var, let of const) globaal. Dit kan tot onverwacht gedrag leiden wanneer meerdere scripts variabelen met dezelfde naam definiëren.

De IIFE werkt als een beschermende omhulling, zodat de interne onderdelen van je plug-in privé blijven.

Snelle controle van de voordelen van een IIFE

Je hebt geleerd over de Immediately Invoked Function Expression (IIFE) en de rol ervan bij de ontwikkeling van jQuery-plug-ins. Dit is een fundamenteel patroon voor het maken van robuuste plug-ins zonder conflicten.

Wat is het belangrijkste voordeel van het omhullen van een jQuery-plug-in in een IIFE, met name het patroon (function($) { ... })(jQuery);?

Samenvatting: plug-inpatronen en bereik

In deze les hebben we de belangrijkste concepten voor het bouwen van robuuste jQuery-plug-ins onderzocht:

  • jQuery-plug-ins: breiden de functionaliteit van jQuery uit voor herbruikbaarheid.
  • IIFE: de Immediately Invoked Function Expression creëert een privébereik.
  • Standaardpatroon: (function($) { ... })(jQuery); is essentieel om globale conflicten met $ te voorkomen en je code in te kapselen.
  • Sleutelwoord this: verwijst naar het jQuery-object; gebruik .each() voor afzonderlijke elementen.
  • Lokaal bereik: declareer interne variabelen (var, let, const) binnen de IIFE om lekken naar het globale bereik te voorkomen.

Als je deze patronen beheerst, blijven je plug-ins modulair, onderhoudbaar en goed samenwerken met andere scripts.

Gratis beginnen

Leer JavaScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
22
Lessen
48

Veelgestelde vragen

Is de les “Ontwerppatronen en scoping voor plugins” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad jQuery Academy, waaronder “Ontwerppatronen en scoping voor plugins”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus jQuery Academy bevat in totaal 3 lessen.

Wat leer ik in “Ontwerppatronen en scoping voor plugins”?

Krijg inzicht in gangbare ontwerppatronen voor plugins, zoals de immediately invoked function expression (IIFE), en in best practices voor variabelenscoping om conflicten te voorkomen. Je oefent met jQuery Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met jQuery Academy te beginnen?

Ervaring vooraf is niet nodig. jQuery Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 3.

Hoe lang duurt de les “Ontwerppatronen en scoping voor plugins”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over jQuery Academy?

Ja. Elke les over jQuery Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Ontwerppatronen en scoping voor plugins
  2. Configureerbare en herbruikbare plugins bouwen
  3. Publieke methoden en callbacks integreren
← Terug naar jQuery Academy