On Github bfncs / fedeps
<script src="jQuery.js"></script> <script src="myPreciousPlugin.js"></script> <script src="anotherPlugin.js"></script> <!-- etc... --> <script src="oneMoreplugin.js"></script> <script src="dom.js"></script>
(function () {
var $ = this.jQuery;
this.myExample = function () {
$.doSomething();
};
}());
Beispiel von requirejs.org
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( 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(
'myModule',
['foo', 'bar'],
function (foo, bar) {
return myModule = {
doStuff: function() {
console.log('Yay! Stuff');
}
};
});
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:
<script data-main="js/app.js" src="js/require.js"></script>
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.
});
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
<script src="bundle.js"></script>
export class q {
constructor() {
console.log('this is an es6 class!');
}
}
<script>
System.import('mymodule').then(function(m) {
new m.q();
});
</script>
… und hier in Ruhe nachlesen:https://github.com/boundaryfunctions/fedeps