(function () {
var $ = this.jQuery;
this.myExample = function () {
$.doSomething();
};
}());
Beispiel von requirejs.org
“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.”John F. Woods
var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
var circle = require('./circle.js');
console.log( 'The area of a circle of radius 4 is '
+ circle.area(4));
Beispiel aus der Node.js-Dokumentation
Das in Node verwendete Modulformat wurde von der CommonJS-Gruppe standardisiert und lässt sich prinzipiell so auch im Browser implementieren.
Der Standard berücksichtigt aber leider nicht die besonderen technischen Bedingungen im Browser:
Mit dem AMD-Standard wurde versucht möglichst viele Vorteile von CJS-Modulen in die Welt der Browser zu bringen, in dem es die technischen Eigenheiten der Browser-Infrastruktur berücksichtigt.
define
um Module zu definierenrequire
um Abhängigkeiten zu ladendefine
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*instantiate the module*/
);
Die module_id
wird i.d.R. automatisch aus dem Pfad generiert und nicht explizit im Quelltext definiert (DRY).
define
define(
'myModule',
['foo', 'bar'],
function (foo, bar) {
return myModule = {
doStuff: function() {
console.log('Yay! Stuff');
}
};
});
require
require(
['foo', 'bar'],
function ( foo, bar ) {
// Modules foo and bar are now loaded and ready to be used
foo.doSomething();
});
Der Standard AMD wird durch mehrere verschiedene JS-Loader-Bibliotheken implementiert:
requirejs.config({
baseUrl: 'js/lib',
paths: {
app: '../app'
}});
requirejs(
['jquery', 'canvas', 'app/sub'],
function ($, canvas, sub) {
// All modules are loaded and can be used now.
});
Browserify lets you require('modules') in the browser by bundling up all of your dependencies.
npm install -g browserify
Ggfs. das Modul für das Buildsystem der Wahl mitinstallieren: grunt
, gulp
, etc.
var unique = require('uniq');
var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];
console.log(unique(data));
npm install uniq
browserify main.js -o bundle.js
export class q {
constructor() {
console.log('this is an es6 class!');
}
}
Universal dynamic module loader - loads ES6 modules, AMD, CommonJS and global scripts in the browser and NodeJS. Works with both Traceur and Babel.https://github.com/systemjs/systemjs
… und hier in Ruhe nachlesen:
https://github.com/boundaryfunctions/fedeps