I've just begun to work with Require.JS and I'm a bit unclear on the appropriate cases in which it should be used, as well as the correct way to use it in those cases.
Here's how I currently have things set up with Require.JS. I have two functions, functionA()
and functionB()
. Both of these functions require an additional function, functionC()
to work properly.
I only want to load functionC() when necessary, i.e. when functionA() or functionB() is going to be called. So I have the following files:
functionC.js
functionC(){ //do stuff }
functionA.js
functionA(){ define(['functionC'],function(){ //functionC() is loaded because it is listed as a dependency, so we can proceed //do some functionA() stuff }); }
functionB.js
functionB(){ define(['functionC'],function(){ //functionC() is loaded because it is listed as a dependency, so we can proceed //do some functionB() stuff }); }
So, is this set up correctly? And if I end up calling both functionA() and functionB() on the same page, is extra work being done since they both load the functionC.js file? If so, is that a problem? And if so, is there a way to set it up so that they first check to see if functionC.js has been loaded yet, and only load it if it hasn't been? Finally, is this an appropriate use of Require.JS?
RequireJS is a JavaScript library and file loader which manages the dependencies between JavaScript files and in modular programming. It also helps to improve the speed and quality of the code.
RequireJS is a basic loader, which is used to loads the JavaScript files, it is a framework to manage dependencies between JavaScript files, and in modular programming, all the functionality divides in different modules, so RequireJs is a best tool to assemble different JavaScript files from different modules by which ...
Yes, it is still used a lot. Or is it slowly dying and needed only for maintaining legacy codes? [Comments as of early 2022] I wouldn't so much say that it is dying as there are very few projects on NPM that don't still support CommonJS.
You can think of the require module as the command and the module module as the organizer of all required modules. Requiring a module in Node isn't that complicated of a concept. const config = require('/path/to/file'); The main object exported by the require module is a function (as used in the above example).
define()
should only be used to define a module. For the above example, where a piece of code should be dynamically loaded, using require()
is more appropriate:
functionA.js
functionA(){ require(['functionC'],function(functionC){ //use funcC in here to call functionC }); }
Some notes:
require([])
is asynchronous, so if the caller of functionA
is expecting a return value from that function, there will likely be errors. It is best if functionA
accepts a callback that is called when functionA
is done with its work.require()
for every call to functionA
; however, after the first call, there is no penalty taken to load functionC.js
, it is only loaded once. The first time require()
gets called, it will load functionC.js
, but the rest of the time, RequireJS knows it is already loaded, so it will call the function(functionC){}
function without requesting functionC.js
again.You can find details about RequireJS and JavaScript modularity here: JavaScript modularity with RequireJS (from spaghetti code to ravioli code)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With