RequireJS basic introduction
<b>RequireJS</b>
Module based coding eases the effort for maintenance and increases reusability.
In RequireJS we separate code into modules which each handle a single responsibility.
RequireJS implements the AMD API, another API for module loading is CommonJS.
<b>Simple Example</b>
In this example we will create a <b>user module</b> and a <b>post module</b>.
The script tag that initialises require.js includes a “data-main” attribute pointing to the main.js file
<b>Index.html</b>
<!doctype html>
<html>
<body>
<script data-main="js/main" src="js/vendor/require.js"></script>
</body>
</html>
The main module initializes our app.The require() function takes two arguments: an array of dependencies, and a callback function to execute once all the dependencies are loaded. This callback function loads our user and post modules.
<b>js/main.js</b>
require(['user', 'blog/post'], function(u, p){
var user = new u(), post = new p();
post.makePost();
});
The user module has a define() function provided by RequireJS, which has to return something, which will be forwarded to the callback function.
<b>js/user.js</b>
define([], function () {
var returnedModule = function () {
var name = 'Steven';
this.getName = function () {
return name;
}
};
return returnedModule;
});
The post module in the js/blog/ folder takes in a dependency for the user module. It returns a method which posts the user name and message to the console.
<b>js/blog/post.js</b>
define(['user'], function (u) {
// load in user module
var user = new u();
var returnedModule = function () {
var name = user.getName();
this.makePost = function (message) {
console.log( name + message + " posted at " + new Date() );
}
};
return returnedModule;
});
Now we have finished our application, I wanted to add some dependancies like jQuery or underscore. To set up libraries like jQuery as a dependency, we must tell RequireJS the path to find the JavaScript file, and the global variable to use in our main.js
<b>Loading other dependencies</b>
require.config({
paths: {
'jQuery': 'vendor/jquery-1.9.0.min',
'underscore': 'vendor/underscore-1.9.min'
},
shim: {
'jQuery': {
exports: '$'
},
'underscore': {
exports: '_'
}
}
});
Then we can use these libraries by adding them into our modules.
require(['user', 'jQuery'], function (u, $) {
var user = new u()
// now append user name to the dom using jQuery
$("p").append(user.getName())
});
I have found another really good intro post on stack overflow showing a basic starter app using requirejs as well as Matthieu Larcher's example tutorial that this post is based on.
Written by Steven Iseki
Related protips
3 Responses
You should ommit the .js in the script tag data-main attribute.
So the following:
<script data-main="js/main.js" src="js/vendor/require.js"></script>
becomes:
<script data-main="js/main" src="js/vendor/require.js"></script>
thanks, fixed it up
thanks , very good intro.
Have a fresh tip? Share with Coderwall community!
JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.
Security insights from Cside