solo per aggiornare un po 'su questa risposta per quanto riguarda @ Marc anche io dare credito a ded e hanno aggiornato un po' per stare con gli ultimi aggiornamenti:
(function (name, definition, context, dependencies) {
if (typeof context['module'] !== 'undefined' && context['module']['exports']) { if (dependencies && context['require']) { for (var i = 0; i < dependencies.length; i++) context[dependencies[i]] = context['require'](dependencies[i]); } context['module']['exports'] = definition.apply(context); }
else if (typeof context['define'] !== 'undefined' && context['define'] === 'function' && context['define']['amd']) { define(name, (dependencies || []), definition); }
else { context[name] = definition(); }
})('events', function() {
// Insert code here
return {
sayHi: function(name) {
console.log('Hi ' + name + '!');
}
};
}, (this || {}));
oggetto alla fine è un riferimento al genitore o all'ambito corrente, diciamo che hai un pacchetto che stai scrivendo e questo è solo un pezzo della torta, beh quel contesto potrebbe essere un oggetto distanziato dal nome e questa è solo una fetta di quella torta .
Inoltre, se si desidera avere dipendenze, esiste un parametro facoltativo alla fine dopo l'ambito che supporta un array, in questo caso il parametro di definizione può quindi utilizzare ciascuna dipendenza come argomento. Inoltre, le dipendenze elencate in un array saranno richieste all'interno della piattaforma node-js per il tuo interesse.
Vedere: https://gist.github.com/Nijikokun/5192472 per un esempio reale.
UMD è la strada da percorrere - controllare http://uRequire.org che converte da AMD/CommonJS di UMD (e anche AMD/CommonJS/script plain) –