JavaScript Définition du module universel (UMD)


Exemple

Le modèle UMD (Universal Module Definition) est utilisé lorsque notre module doit être importé par un certain nombre de chargeurs de modules différents (par exemple, AMD, CommonJS).

Le modèle lui-même comprend deux parties:

  1. Une IIFE (expression de fonction appelée immédiatement) qui recherche le chargeur de module qui est en cours d'implémentation par l'utilisateur. Cela prendra deux arguments; root (une this référence à la portée mondiale) et l' factory (la fonction où nous déclarons notre module).

  2. Une fonction anonyme qui crée notre module. Ceci est transmis comme second argument à la partie IIFE du motif. Cette fonction reçoit un nombre quelconque d’arguments pour spécifier les dépendances du module.

Dans l'exemple ci-dessous, nous vérifions AMD, puis CommonJS. Si aucun de ces chargeurs n'est utilisé, nous avons recours à la mise à disposition globale du module et de ses dépendances.

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['exports', 'b'], factory);
    } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
        // CommonJS
        factory(exports, require('b'));
    } else {
        // Browser globals
        factory((root.commonJsStrict = {}), root.b);
    }
}(this, function (exports, b) {
    //use b in some fashion.

    // attach properties to the exports object to define
    // the exported module properties.
    exports.action = function () {};
}));