RequireJS is an implementation of the Asynchronous Module (AMD) API used to load javascript files asynchronously (i.e. without blocking) and manage dependencies between multiple javascript files. It also includes an optimization tool for combining and minimizing script files for deployment while allowing the developer to maintain logically separate code.
The following example will demonstrate a basic installation and setup of RequireJS.
Create a new HTML file called index.html  and paste the following content:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Hello RequireJS</title>
    <script type="text/javascript" src="http://requirejs.org/docs/release/2.3.2/minified/require.js"></script>
</head>
<body>
    <!-- place content here --->
    <script>
        requirejs(["scripts/say"], function(say) {
            alert(say.hello());
        });
    </script>
</body>
 Create a new JS file at scripts/say.js  and paste the following content:
define([], function(){
    return {
        hello: function(){
           return "Hello World";
        }
    };
});
 Your project structure should look like this:
- project
    - index.html
    - scripts
        - say.js
 Open the index.html  file in a browser and it will alert you with 'Hello World'.
Load the require.js script file.
<script type="text/javascript" src="http://requirejs.org/docs/release/2.3.2/minified/require.js"></script>
 Load the say  module asynchronously from the scripts  folder. (Note that you do not need the .js  extension when referencing module.)  The returned module is then passed to the provided function where hello()  is invoked.
<script>
   requirejs(["scripts/say"], function(say) {
       alert(say.hello());
   });
</script>
 The say  module returns a single object with one function hello  defined.
define([], function(){
    return {
        hello: function(){
           return "Hello World";
        }
    };
});
 The following example expands upon Hello World  by demonstrating multiple dependencies using the define()  function.
Create a new HTML file called index.html  and paste the following content:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Hello RequireJS</title>
    <script type="text/javascript" src="http://requirejs.org/docs/release/2.3.2/minified/require.js"></script>
</head>
<body>
    <!-- place content here --->
    <script>
        requirejs(["scripts/say"], function(say) {
            console.log(say.hello("english"));
            console.log(say.hello("spanish"));
            console.log(say.hello("french"));
        });
    </script>
</body>
 Create a new JS file at scripts/say.js  and paste the following content:
define(["scripts/translations"], function(translations){
    return {
        hello: function(language){
           return translations[language].hello + " " + translations[language].world;
        }
    };
});
 Create a new JS file at scripts/translations.js  and paste the following content:
define([], function(){
    return {
        "english": {
            hello: "Hello",
            world: "World"
        },
        "spanish": {
            hello: "Hola",
            world: "Mundo"
        },
        "french": {
            hello: "Bonjour",
            world: "Le Monde"
        }
    };
});
 Your project structure should look like this:
- project
    - index.html
    - scripts
        - say.js
        - translations.js
 Open the index.html  file in a browser and the console will output:
Hello World
Hola Mundo
Bonjour Le Monde
 Load the require.js script file.
<script type="text/javascript" src="http://requirejs.org/docs/release/2.3.2/minified/require.js"></script>
 Load the say  module asynchronously from the scripts  folder. (Note that you do not need the .js  extension when referencing module.)  The returned module is then passed to the provided function where hello()  is invoked.
<script>
     requirejs(["scripts/say"], function(say) {
         console.log(say.hello("english"));
         console.log(say.hello("spanish"));
         console.log(say.hello("french"));
     });
</script>
 The say  module returns a single object with one function hello  defined, but in this case we have defined a dependency (scripts/translations ) and we will pull the translations from there.
define(["scripts/translations"], function(translations){
    return {
        hello: function(language){
           return translations[language].hello + " " + translations[language].world;
        }
    };
});
 The translations  module simply returns an object with various word translations.
define([], function(){
    return {
        "english": {
            hello: "Hello",
            world: "World"
        },
        "spanish": {
            hello: "Hola",
            world: "Mundo"
        },
        "french": {
            hello: "Bonjour",
            world: "Le Monde"
        }
    };
});
 Not all libraries are defined in a way that is compatible with AMD and RequireJS's define()  function.  The author's have addressed this by including a shim  directive for configuring those dependencies.
One example is using the jQuery UI Layout Plugin. That plugin depends on jQuery. You can configure it like this:
requirejs.config({
    paths: {
        'jquery': '../path/to/jquery.min',
        'jquery.layout': '../path/to/jquery.layout.min'
    },
    shim: {
        'jquery.layout': {
            deps: ['jquery']
        }
    }
});
 And then use it in a layout module like this:
define(['jquery', 'jquery.layout'], function ($, layout) {
    $('body').layout();
});
 A single entry point to your application is possible with RequireJS by using the data-main  attributed within the <script>  tag.
<script type="text/javascript" data-main="scripts/main" src="http://requirejs.org/docs/release/2.3.2/minified/require.js"></script>
 On load, RequireJS will look for the data-main  attribute and inject the main script tag into the DOM with the async  attribute set.  It is this file that you will want to do any configuration before kicking off your application.
For example:
// contents of scripts/main.js
require.config({
    waitSeconds: 10,
    paths: {
        jquery: 'libs/jquery-1.4.2.min'
    }
});
requirejs(["jquery", "libs/say"], function($, say) {
    var $body = $('body');
    $body.append( $('<p/>').text(say.hello("english")) );
    $body.append( $('<p/>').text(say.hello("spanish")) );
    $body.append( $('<p/>').text(say.hello("french")) );
});