Building eine JavaScript-Bibliothek, warum ein IIFE auf diese Weise verwenden?

Ich habe festgestellt, dass viele Bibliotheken diesen Stil verwenden, um ihre Bibliothek zu definieren. Ich stelle auch fest, dass die erste selbstaufrufende Funktion etwas mit Require.js- oder AMD-Systemen zu tun hat. Sie haben immer die Factory als Argument. Ich werde mehr auf Require.js- und Browserify-Funktionen eingehen.

Warum wird der Hauptcode an das Ende der ersten selbstaufrufenden Funktion in Klammern übergeben? Ist dies eine Schließung oder wird dies nur als anonyme Funktion angesehen? Ich werde mich eingehender mit beiden befassen. Was sind die Vorteile davon? Es sieht so aus, als würde der Autor innerhalb des Verschlusses ein @ übergebestring, this, und eincallback.

Wird dies meiner Bibliothek eine saubere und sichere Möglichkeit geben, das Hauptobjekt in diesem Beispiel unten zu globalisierenPlease?

(function( globalName, root, factory ) {
    if ( typeof define === 'function' && define.amd ) {
        define( [], factory );
    }
    else if ( typeof exports === 'object' ) {
        module.exports = factory();
    }
    else{
        root[globalName] = factory();
    }
}('Please', this, function(){

Ich versuche mich wirklich tief in JavaScript zu vertiefen und meine eigene kleine MVC-Architektur zu erstellen. Ich möchte nicht hören, dass ich albern bin oder es schon einmal gemacht habe. Ich möchte mich selbst herausfordern und lernen.

Wenn es großartige Ressourcen zum Erstellen einer JavaScript-Bibliothek oder noch besser einer MVC-Bibliothek gibt, würde ich gerne wissen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage