Wystarczy zaktualizować trochę na tej odpowiedzi w odniesieniu do @marc ja też dać kredyt DED i zaktualizowaniu to trochę się z najnowszymi aktualizacjami:
(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 || {}));
Object na końcu jest odniesieniem do rodzica lub bieżącego zakresu, powiedzmy, że masz paczkę, którą piszesz i jest to po prostu kawałek ciasta, dobrze, że kontekst może być obiektem z odstępem między nazwami i jest to tylko kawałek tego ciasta .
Ponadto, jeśli chcesz mieć zależności, istnieje opcjonalny parametr na końcu po twoim zasięgu, który obsługuje tablicę, w tym przypadku parametr definicji może wykorzystać każdą zależność jako argument. Ponadto zależności wyszczególnione w tablicy będą wymagane dla wygody użytkownika na platformie węzeł-js.
Zobacz: https://gist.github.com/Nijikokun/5192472 na prawdziwy przykład.
UMD jest do zrobienia - sprawdź http://uRequire.org który konwertuje z AMD/CommonJS do UMD (a także AMD/CommonJS/plain skryptu) –