Singletons in RequireJS
by Javid Jamae
HTML
<script src="http://requirejs.org/docs/release/2.1.14/minified/require.js"></script>
<pre id="output"></pre>
JavaScript
var nextInstId = 0;
define('impl/myclass', [], function(){
'use strict';
var MyClass = (function() {
function MyClass() {
var self = this,
_instId = nextInstId++;
self.write = function(text) {
$('pre#output').append(_instId + ': ' + text + '\r\n');
};
};
return MyClass;
})();
return MyClass;
});
define('inst/myclass', ['impl/myclass'], function(MyClass) {
return new MyClass();
});
// EXAMPLE OF USAGE
require(['inst/myclass'], function (myClass) {
myClass.write('This is first output from singleton');
});
require(['inst/myclass'], function (myClass) {
myClass.write('This is second output from singleton');
});
require(['impl/myclass'], function (MyClass) {
var myClass = new MyClass();
myClass.write('This is first output from non-singleton');
});
require(['impl/myclass'], function (MyClass) {
var myClass = new MyClass();
myClass.write('This is second output from non-singleton');
});
require(['inst/myclass'], function (myClass) {
myClass.write('This is third output from singleton');
});