If a js or css file is loaded by a module loader, it means that the module loader has chance to modify the module url before sending request. So, this feature can be used to map an online file to a local version. It is very convenient for debugging.
Let us take markzhi.com for illustration.
First, visit
http://markzhi.com/,
and you can find that all the js files are fetched from online server.
Then change the page url to
http://markzhi.com/?seajs-debug.
When the page is loaded again, a layer is floating at the bottom right corner.
Fill the input with http://localhost/seajs-map.js
The content of seajs-map.js
is:
define(function() { var rules = []; // the map rules for markzhi.com rules.push([ 'http://markzhi.com/assets/', 'http://localhost/~lifesinger/markzhi/portal/src/main/webapp/assets/' ]); seajs.config({'map': rules}); });
The rules
can also be a regex:
// replace compressed version to debug version rules.push([ /^(.*)\.js$/i, '$1-debug\.js' ]);
Finally, click the "Refresh" button in the floating layer, and then you can
see that all the js files are loaded from localhost now except
sea.js
and plugin-map.js
.
You can also click the "Hide" button to hide the floating layer, or click the "Exit" button to disable the debug mode.
Adding seajs-debug
to the query string will bring the debug
console layer to front. In addition to this approach, sometimes
using a bookmarklet is more convenient.
SeaJS Map Tool (Drag me to the favorite bar, and click it when needed)
** TIPS: a "[debug] - " prefix will appear in the document title when the page is under debugging mode.