Beginning RequireJS

āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻāĻŽāύ āĻāĻ• āϜāĻŋāύāĻŋāϏ āϝ⧇ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻŦ⧟āϏ āĻŦāĻžā§œāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻāϟāĻž āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻž āĻ•āĻ āĻŋāύ āĻĨ⧇āϕ⧇ āĻ•āĻ āĻŋāύ āĻšāϤ⧇āχ āĻĨāĻžāϕ⧇āĨ¤ āφāĻŦāĻžāϰ āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ āĻ…āύ⧇āĻ• āĻĒā§āϞāĻžāĻ—āχāύ āχāωāϜ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ āϤ⧋ āĻāχ āϝ⧇ āφāĻŽāϰāĻž āĻāϤ āĻāϤ āĻĒā§āϞāĻžāĻ—āχāύ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻŋ āĻŦ⧇āĻļāĻŋāϰ āĻ­āĻžāĻ— āϏāĻŽā§Ÿāχ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ āĻāĻ•āϟāĻž āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ (āĻĒā§āϞāĻžāĻ—āχāύ) āφāϰ⧇āĻ•āϟāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāĨ¤

āϝ⧇āĻŽāύ āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ myScript.js āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇ āϝ⧇āϟāĻžāϤ⧇ āĻāχ āϕ⧋āĻĄ āφāϛ⧇āσ

$(function () {
alert("document is loaded");
});

āϤ⧋ āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻāχ āϕ⧋āĻĄā§‡ jQuery āĻāϰ āĻāĻ•āϟāĻž āĻĢāĻžāĻ‚āĻļāύ āφāϛ⧇āĨ¤ āĻāĻ–āύ āĻāχ āϕ⧋āĻĄ āχāωāϜ āĻ•āϰāϤ⧇ āĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ jQuery āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ…āύ⧇āĻ•āϟāĻž āĻāϰāĻ•āĻŽāσ

<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="myScript.js"></script>

āĻāĻ–āĻžāύ⧇ āϗ⧁āϰ⧁āĻ¤ā§āϤāĻĒā§‚āĻ°ā§āύ āĻŦā§āϝāĻžāĻĒāĻžāϰ āĻšāĻšā§āϛ⧇ jQuery āĻ…āĻŦāĻļā§āϝāχ myScript.js āĻāϰ āφāϗ⧇ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ•āĻžāϰāύ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĢāĻžāχāϞ jQuery āĻāϰ āĻāĻ•āϟāĻž āĻĢāĻžāĻ‚āĻļāύ āχāωāϜ āĻ•āϰāϛ⧇āĨ¤ āϤāĻžāχ āφāĻŽāϰāĻž āϝāĻĻāĻŋ āĻāĻĻ⧇āϰ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻšā§‡āĻžā§āϜ āĻ•āϰ⧇ āĻĻ⧇āχ āĻāĻ­āĻžāĻŦ⧇āσ

<script src="myScript.js"></script>
<script src="http://code.jquery.com/jquery.min.js"></script>

āĻāĻ–āύ āφāϰ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻĄ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤ āĻ•āĻžāϰāύ jQuery āĻĒāϰ⧇ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤ āĻāĻ–āύ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻ•āύāϏ⧋āϞ āϖ⧁āϞāϞ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžāĻŦ⧇ āĻāχ āĻāϰāϰ āĻĻāĻŋāĻšā§āϛ⧇āσ

ReferenceError: $ is not defined

āϤ⧋ āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āφāĻŽāĻžāĻĻ⧇āϰ myScript.js āϏāĻŦāϏāĻŽā§Ÿ jQuery āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāĨ¤

āφāĻŦāĻžāϰ āϝāĻĻāĻŋ āφāĻŽāϰāĻž BACKBONE āχāωāϜ āĻ•āϰāϤ⧇ āϚāĻžāχ āϏ⧇āϟāĻž āφāĻŦāĻžāϰ UNDERSCORE āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāĨ¤ āφāĻŦāĻžāϰ UNDERSCORE āĻ¸ā§āĻŦ⧟āĻ‚ jQuery āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāĨ¤

āĻāχ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āωāĻĒāĻžā§Ÿ āĻšāĻšā§āϛ⧇ āϏāĻŦāϏāĻŽā§Ÿ āϝ⧇āχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāϗ⧇ āϞ⧋āĻĄ āĻšāĻ“ā§ŸāĻž āĻĻāϰāĻ•āĻžāϰ āϏ⧇āϟāĻž āφāϗ⧇ āϞ⧋āĻĄ āĻ•āϰāĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āύ⧇āĻ• āĻĨāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻ°ā§āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āϞāĻžāϗ⧇, āϤāĻžāχ āϕ⧇ āϕ⧋āύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞ āϤāĻž āĻŽāύ⧇ āϰāĻžāĻ–āĻž āϏāĻŦāϏāĻŽā§Ÿ āϏāĻŽā§āĻ­āĻŦ āĻšā§Ÿ āύāĻžāĨ¤ āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻŽāύ āϕ⧋āύ āϏāĻ˛ā§āϝ⧁āĻļāύ āĻĻāϰāĻ•āĻžāϰ āϝāĻžāϤ⧇ āĻ•āϰ⧇ āφāĻŽāϰāĻž āχāĻšā§āϛ⧇āĻŽāϤ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻŦ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻ–āύāχ āϕ⧇ āĻ•āĻžāϰ āφāϗ⧇ āϞ⧋āĻĄ āĻšāĻŦ⧇ āĻāϗ⧁āϞāĻž āύāĻŋā§Ÿā§‡ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻž āϞāĻžāĻ—āĻŦ⧇ āύāĻžāĨ¤

āϏāĻŽāĻžāϧāĻžāύāσ

requirejs

RequireJS āĻšāĻšā§āϛ⧇ āĻ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āĻ…āĻ¨ā§āϝāϤāĻŽ āĻāĻ•āϟāĻŋ āϏāĻŽāĻžāϧāĻžāύāĨ¤ RequireJS āĻ āφāĻŽāϰāĻž āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ…āĻĒāĻļāύ āϞāĻŋāĻ–āĻŦ āφāϰ RequireJS āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻŦ⧇ āϝ⧇ āϏāĻ•āϞ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϞ⧋āĻĄ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤

āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻŽāϰāĻž RequireJS āχāĻŽāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻŦāσ

<script src="require.js" data-main="main"></script>

āĻāĻ–āĻžāύ⧇ data-main āĻ āĻāĻ•āϟāĻž āĻĢāĻžāχāϞ⧇āϰ āύāĻžāĻŽ āĻĻā§‡ā§ŸāĻž āφāϛ⧇āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž main āĻšāĻšā§āϛ⧇ main.jsāĨ¤ āφāϰ main.js āĻ āύāĻŋāĻšā§‡āϰ āϕ⧋āĻĄ āϞāĻŋāĻ–āĻŦāσ

// āĻĒā§āϰāĻĨāĻŽā§‡ āĻŦāϞ⧇ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇ āϕ⧋āύ āϕ⧋āύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻĢāĻžāχāϞ āĻ…āĻ°ā§āĻĄāĻžāϰāĻŋāĻ‚ āϕ⧋āύ āĻĢā§āϝāĻžāĻ•ā§āϟ āύāĻž
requirejs.config({
paths: {
"jquery": "http://code.jquery.com/jquery.min"
// āĻāĻ–āĻžāύ⧇āĻ“ āĻĢāĻžāχāϞ⧇āϰ āĻļ⧇āώ⧇ .js āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĻāϰāĻ•āĻžāϰ āύāĻžāχ
}
});
require(["jquery"], function ($) {
// āĻāĻ–āĻžāύ⧇ [] āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāϞ⧇ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇ āϕ⧋āύ āϕ⧋āύ āĻĢāĻžāχāϞ āϞ⧋āĻĄ āĻ•āϰāĻž āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇, āϝāĻĻāĻŋ
// āĻāϕ⧇āϰ āĻ…āϧāĻŋāĻ• āĻĢāĻžāχāϞ āĻĻāϰāĻ•āĻžāϰ āĻšā§Ÿ āϤāĻŦ⧇ āĻ•āĻŽāĻž āϏ⧇āĻĒāĻžāϰ⧇āϟ āĻ•āϰ⧇ āĻŦāϞ⧇ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤
// āϝ⧇āĻŽāύ- ["jquery", "otherFile"]. āĻāĻ–āύ āύāĻŋāĻšā§‡āϰ āϕ⧋āĻĄ āϤāĻ–āύāχ āϰāĻžāύ āĻ•āϰāĻŦ⧇
// āϝāĻ–āύ [] āĻāϰ āĻ­āĻŋāϤāϰ⧇ āϝāĻž āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāĻž āφāϛ⧇ āϤāĻž āϞ⧋āĻĄ āĻļ⧇āώ āĻšāĻŦ⧇
$(function () {
alert("document is loaded!");
});
});

āĻ•āĻŽāύ āĻ•āĻŋāϛ⧁ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύāσ

baseUrl: // āĻĒāĻĨ āϏ⧇āϟ āĻ•āϰ⧇ āĻĻā§‡ā§ŸāĻž āϝāĻžāĻŦ⧇ āϝ⧇ requireJS āϕ⧋āύ āϞ⧋āϕ⧇āĻļāύ⧇ āĻĢāĻžāχāϞ āϖ⧁āϜāĻŦ⧇āĨ¤
// āϝāĻĻāĻŋ baseUrl āϏ⧇āϟ āĻ•āϰāĻž āύāĻž āĻšā§Ÿ āϤāĻŦ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻšāĻŦ⧇ āϝ⧇ āĻĒ⧇āϜ āĻ requireJS
// āϰ⧇āĻĢāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϤāĻžāϰ āϞ⧋āϕ⧇āĻļāύ
paths: // āĻĢāĻžāχāϞ āĻĒāĻĨ āĻŦāϞ⧇ āĻĻāĻŋāϤ⧇ āϝ⧇āϗ⧁āϞ⧋ baseUrl āĻ āĻĨāĻžāĻ•āĻŦ⧇āύāĻžāĨ¤ āϝ⧇āĻŽāύ- āϝāĻĻāĻŋ āϕ⧋āύ āĻĢāĻžāχāϞ
// CDN āĻĨ⧇āϕ⧇ āϰ⧇āĻĢāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āϤāĻŦ⧇ āĻ“āχ āĻĢāĻžāχāϞ āĻ…āĻŦāĻļā§āϝāχ baseUrl āĻ āϖ⧁āϜāϞ⧇
// āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇ āύāĻž
waitSeconds: // āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āφāϗ⧇ requireJS āĻ•āϤ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻŦ⧇
scriptType: // āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϟāĻžāχāĻĒ āĻŦāϞ⧇ āĻĻā§‡ā§ŸāĻž āϝāĻžāĻŦ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻšāĻšā§āϛ⧇ "text/javascript"

AMD with RequireJS

āĻāĻ–āύ āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ āĻ•āĻžāĻœā§‡āϰ āϏ⧁āĻŦāĻŋāĻĻāĻžāĻ°ā§āĻĨ⧇ (āϕ⧋āĻĄ āϰāĻŋ-āχāωāϜ āĻ•āϰāĻž, āϕ⧋āĻĄ āĻ•ā§āϞāĻŋāύ āϰāĻžāĻ–āĻž āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŽāĻĄāĻŋāωāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϞāĻžāϗ⧇ āϝ⧇āĻŽāύ – āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāϰ āĻŽāĻĄāĻŋāωāϞ, āχāωāϜāĻžāϰ āĻŽāĻĄāĻŋāωāϞāĨ¤ āĻāĻŦāĻžāϰ āĻĻ⧇āĻ–āĻŦ āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ “AMD” āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻĢāϞ⧋ āĻ•āϰ⧇ āĻāχ āĻŽāĻĄāĻŋāωāϞ āϗ⧁āϞ⧋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦāĨ¤ AMD (Asynchronous Module Definition) āĻšāĻšā§āϛ⧇ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡ āĻŽāĻĄāĻŋāωāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻž āĻĒāĻĒ⧁āϞāĻžāϰ āĻ—āĻžāχāĻĄāϞāĻžāχāύāĨ¤

āφāĻŽāĻĻ⧇āϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻšāĻŦ⧇ āĻāϰāĻ•āĻŽāσ

  • index.html
  • js
    • main.js
    • libs
      • jquery.js
      • require.js
      • underscore.js
      • backbone.js
    • module // āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāĻĄāĻŋāωāϞ āϗ⧁āϞ⧋ āĻāĻ–āĻžāύ⧇ āĻĨāĻžāĻ•āĻŦ⧇
      • module1.js
      • module2.js

index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>AMD & RequireJS</title>
</head>
<body>
<script src="js/libs/require.js" data-main="js/main"></script>
</body>
</html>

āĻāĻŦāĻžāϰ āφāĻŽāϰāĻž āĻāĻ•āϟāĻž āĻŽāĻĄāĻŋāωāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ āϝāĻžāϰ āϞ⧋āϕ⧇āĻļāύ āĻšāĻŦ⧇ js/module/repository.js:

define("repository", function() {
var customerData = [
{ id: 1, name: "Nina" },
{ id: 2, name: "Tina" },
{ id: 3, name: "Mina" }
];
return {
customerData: customerData
};
});

āĻāĻ–āĻžāύ⧇, define āĻŽā§‡āĻĨāĻĄ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻĄāĻŋāωāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻšā§āϛ⧇ āĻŽāĻĄāĻŋāωāϞ āĻāϰ āύāĻžāĻŽ (āϝ⧇āĻŽāύ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ repository)āĨ¤ āĻāϟāĻž āĻ…āĻĒāĻļāύāĻžāϞāĨ¤ āϝāĻĻāĻŋ āύāĻž āύ⧇āχ āϤāĻžāĻšāϞ⧇ āĻŦāĻžāχ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĢāĻžāχāϞ⧇āϰ āύāĻžāĻŽāϟāĻžāχ āĻŽāĻĄāĻŋ⧟⧁āϞ⧇āϰ āύāĻžāĻŽ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻž āϤāĻ–āύāĻŋ āĻĻā§‡ā§ŸāĻž āϜāϰ⧁āϰ⧀ āϝāĻ–āύ āφāĻŽāϰāĻž āφāϰ⧋ āĻ…āύ⧇āĻ• āĻĢāĻžāχāϞ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āύāĻ•ā§āϝāĻžāϟ āĻ•āϰ⧇ āĻāĻ•āϟāĻž āĻĢāĻžāχāϞ āĻŦāĻžāύāĻžāĻŦāĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻšā§āϛ⧇ āĻāĻ•āϟāĻž āĻ…ā§āϝāĻžāϰ⧇ āϝ⧇āϟāĻž āφāĻŽāϰāĻž āĻĻ⧇āχ āύāĻžāχāĨ¤ āĻāχ āĻ…ā§āϝāĻžāϰ⧇āϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āĻāχ āĻŽāĻĄāĻŋāωāϞ āϰāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻ¨ā§āϝ āϝ⧇āϏāĻŦ āĻŽāĻĄāĻŋāωāϞ āĻŦāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻĻāϰāĻ•āĻžāϰāĨ¤ āĻāϟāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ āφāĻŽāϰāĻž āĻĒāϰ⧇ āĻĻ⧇āĻ–āĻŦāĨ¤

āĻļ⧇āώ⧇āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻšā§āϛ⧇ āĻāĻ•āϟāĻž āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĢāĻžāĻ‚āĻļāύ āϝ⧇āϟāĻžāϰ āĻ­āĻŋāϤāϰ⧇ āĻ“āχ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϕ⧋āĻĄ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻāĻŦāĻžāϰ āφāĻŽāϰāĻž main.js āĻāϰ āĻ­āĻŋāϤāϰ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŦ:

requirejs.config({
paths: {
"jquery": "libs/jquery.min",
"repository": "module/repository"
},
baseUrl: "js"
});
require(["jquery", "repository"], function ($, repo) {
$(function () {
var data = repo.customerData,
output = [],
k = 0;
data.forEach(function (key) {
output[k++] = "<p>";
output[k++] = "Id: " + key.id + " | ";
output[k++] = "Name: " + key.name;
output[k++] = "</p>";
});
$("body").append(output.join(""));
});
});

āĻāĻ–āύ āϧāϰ⧇ āύ⧇āχ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻŽāĻĄāĻŋāωāϞ repository āĻ…āĻ¨ā§āϝ āφāϰ⧇āĻ•āϟāĻž āĻŽāĻĄāĻŋāωāϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāĨ¤ āϝ⧇āϟāĻžāϰ āύāĻžāĻŽ āĻšāĻšā§āϛ⧇ js/module/service.js:

define("service", function() {
var orders = [
{ customerId: 1, orderId: "ORD101" },
{ customerId: 2, orderId: "ORD201" },
{ customerId: 3, orderId: "ORD301" }
];
return {
orders: orders
};
});

āĻāĻ–āύ āĻāχ āĻŽāĻĄāĻŋāωāϞāϟāĻž āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ repository āĻŽāĻĄāĻŋāωāϞ⧇ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻŽāĻžāĻĻ⧇āϰ main.js āĻĢāĻžāχāϞ⧇ service āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āϝ⧋āĻ— āĻ•āϰāĻŦāσ

requirejs.config({
paths: {
"jquery": "libs/jquery.min",
"repository": "module/repository",
"service": "module/service"
},
baseUrl: "js"
});

āĻāϰāĻĒāϰ āφāĻŽāĻžāĻĻ⧇āϰ repository āĻŽāĻĄāĻŋāωāϞ⧇āϰ define āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻāχ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāĻĒ⧇āĻ¨ā§āĻĄā§‡āĻ¨ā§āϏāĻŋ āĻŦāϞ⧇ āĻĻāĻŋāĻŦāĨ¤ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏ⧇āϟāĻž āĻšāĻšā§āϛ⧇ service āĻŽāĻĄāĻŋāωāϞāσ

define("repository", ["service"], function(service) {
var customerData = [
{ id: 1, name: "Nina", orderId: service.orders[0].orderId },
{ id: 2, name: "Tina", orderId: service.orders[1].orderId },
{ id: 3, name: "Mina", orderId: service.orders[2].orderId }
];
return {
customerData: customerData
};
});

Loading Non AMD scripts

āĻāĻŦāĻžāϰ āφāĻŽāϰāĻž āĻĻ⧇āĻ–āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϞ⧋āĻĄ āĻ•āϰāĻŦ āϝ⧇āϗ⧁āϞ⧋ āĻāĻŽāĻĄāĻŋ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻĢāϞ⧋ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšā§Ÿ āύāĻžāχāĨ¤ āφāĻŽāϰāĻž āĻāĻŦāĻžāϰ Backbone āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āĻ…ā§āϝāĻžāĻĄ āĻ•āϰāĻŦāĨ¤ Backbone āĻšāĻšā§āϛ⧇ āĻāĻ•āϟāĻž āĻĒāĻĒ⧁āϞāĻžāϰ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĢā§āϰ⧇āĻŽāĻ“ā§ŸāĻžāĻ°ā§āĻ•āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ Backbone āϝ⧇āĻšā§‡āϤ⧁ "AMD" āύāĻž āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟ⧁ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇ āύāĻŋāϤ⧇ āĻšāĻŦ⧇āσ

requirejs.config({
shim: {
underscore: {
exports: "_"
},
backbone: {
exports: "Backbone",
deps: ["underscore"]
}
},
paths: {
"jquery": "libs/jquery.min",
"underscore": "libs/underscore-min",
"backbone": "libs/backbone-min",
"repository": "module/repository",
"service": "module/service"
},
baseUrl: "js"
});

āĻĒā§āϰāĻĨāĻŽā§‡ paths āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻāϰ āĻ­āĻŋāϤāϰ⧇ Backbone āĻāĻŦāĻ‚ Underscore āĻĢāĻžāχāϞ⧇āϰ āϞ⧋āϕ⧇āĻļāύ āĻŦāϞ⧇ āĻĻāĻŋāϞāĻžāĻŽāĨ¤ Underscore āϞ⧋āĻĄ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰ āĻ•āĻžāϰāύ Backbone āύāĻŋāĻœā§‡āχ āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļāĻŋāϞāĨ¤ āĻāϰāĻĒāϰ shim āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻāϰ āĻ­āĻŋāϤāϰ⧇ āφāĻŽāϰāĻž āĻāϗ⧁āϞ⧋ āϞ⧋āĻĄ āĻ•āϰāϞāĻžāĻŽāĨ¤ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύ āϝ⧇ Backbone āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ Underscore āϕ⧇ āĻāϰ āĻĄāĻŋāĻĒ⧇āĻ¨ā§āĻĄā§‡āĻ¨ā§āϏāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāύ āĻšā§Ÿā§‡āϛ⧇āĨ¤

āĻāĻ–āύ āφāĻŽāϰāĻž backbone āχāωāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦāσ

require(["jquery", "underscore", "backbone"], function ($, _, B) {
console.log("Underscore Version: " + _.VERSION);
console.log("Backbone Version: " + B.VERSION);
});

āϏāĻŦ āĻŽāĻŋāϞāĻŋā§Ÿā§‡ āφāĻŽāĻžāĻĻ⧇āϰ main.js āĻšāĻŦ⧇ āĻāϰāĻ•āĻŽāσ

requirejs.config({
shim: {
underscore: {
exports: "_"
},
backbone: {
exports: "Backbone",
deps: ["underscore"]
}
},
paths: {
"jquery": "libs/jquery.min",
"underscore": "libs/underscore-min",
"backbone": "libs/backbone-min",
"repository": "module/repository",
"service": "module/service"
},
baseUrl: "js"
});
require(["jquery", "repository"], function ($, repo) {
$(function () {
var data = repo.customerData,
output = [],
k = 0;
data.forEach(function (key) {
output[k++] = "<p>";
output[k++] = "Id: " + key.id + " | ";
output[k++] = "Name: " + key.name + " | ";
output[k++] = "Order Id: " + key.orderId;
output[k++] = "</p>";
});
$("body").append(output.join(""));
});
});
require(["jquery", "underscore", "backbone"], function ($, _, B) {
console.log("Underscore Version: " + _.VERSION);
console.log("Backbone Version: " + B.VERSION);
});