Thursday, December 24, 2020

What is RequireJS

RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code.


IE 6+ .......... compatible ✔

Firefox 2+ ..... compatible ✔

Safari 3.2+ .... compatible ✔

Chrome 3+ ...... compatible ✔

Opera 10+ ...... compatible ✔


This setup assumes you keep all your JavaScript files in a "scripts" directory in your project. For example, if you have a project that has a project.html page, with some scripts, the directory layout might look like so:


Add require.js to the scripts directory, so it looks like so:


project-directory/

project.html

scripts/

main.js

require.js

helper/

util.js



To take full advantage of the optimization tool, it is suggested that you keep all inline script out of the HTML, and only reference require.js with a requirejs call like so to load your script:


<!DOCTYPE html>

<html>

    <head>

        <title>My Sample Project</title>

        <!-- data-main attribute tells require.js to load

             scripts/main.js after require.js loads. -->

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

    </head>

    <body>

        <h1>My Sample Project</h1>

    </body>

</html>


You could also place the script tag end of the <body> section if you do not want the loading of the require.js script to block rendering. For browsers that support it, you could also add an async attribute to the script tag.


Inside of main.js, you can use requirejs() to load any other scripts you need to run. This ensures a single entry point, since the data-main script you specify is loaded asynchronously.


requirejs(["helper/util"], function(util) {

    //This function is called when scripts/helper/util.js is loaded.

    //If util.js calls define(), then this function is not fired until

    //util's dependencies have loaded, and the util argument will hold

    //the module value for "helper/util".

});


References:

https://requirejs.org/docs/start.html


No comments:

Post a Comment