Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Interacting with require.js modules from the Firebug/Chrome console?

I'm just getting started with require.js. I have successfully wrapped jquery, some plugins, and a couple of my own modules. I'm trying to interact with my modules (or jquery) from Firebug (or Google Chrome's JS console), and I'm not having much luck.

What is the correct way to access these modules from the console?

like image 914
erikcw Avatar asked Dec 10 '11 17:12

erikcw


2 Answers

Say we have module /app/scripts/methodsModule.js that returns a few methods:

define({     someMethod: function() {         // do stuff     },     anotherMethod: function() {         // do some more stuff     } }); 

In our data-main file /app/scripts/main.js we have:

require(['methodsModule'], function(methods) {     methods.someMethod() // call someMethod     methods.anotherMethod() // call anotherMethod }) 

Once requireJS loads up our data-main, we can access any modules that have already been loaded by requireJS from the javascript console command line like so:

>> methods = require('methodsModule'); // requireJS has module methodsModule stored >> methods.someMethod() // call someMethod >> methods.anotherMethod() // call anotherMethod 

If a module hasn't been loaded by a call to require() or define(), we have to pass our own callback for the require function to call after the module has been loaded:

>> myCB = function(methods) { methods.someMethod() } >> require(['methodsModule'], myCB) 

Otherwise, requireJS throws an error saying that the module has not yet been loaded..

like image 124
benastan Avatar answered Oct 12 '22 06:10

benastan


There is a way without using callbacks.

If you module was not required in console or you application before, you can just require it first:

require(['methodsModule']); 

after that you can use "dynamic" require to access it:

require('methodsModule').someMethod(); 
like image 25
Valentin Nemcev Avatar answered Oct 12 '22 06:10

Valentin Nemcev