-
Notifications
You must be signed in to change notification settings - Fork 27
Off package modules
azproduction edited this page Jan 28, 2013
·
1 revision
- Flags:
async,race,cache_async,async_plain,async_plainonly
You can build async LMD package. (Disabled by default)
Then your packages can require off-package modules from http server.
Build LMD package using async: true flag. LMD loader now can require javascript FunctionsExpressions,
JSON or template strings asynchronously. LMD parses file content depend on Content-type header.
You must work online using HTTP server for correct headers, if you work offline (using file: protocol)
then Content-type header will be INVALID so all modules will be strings.
Note
- If you use
file:protocol then all modules will be strings - LMD loader uses simple RegExp
/script$|json$/withContent-typeto determine the kind of content and eval it (if json or javascript) or return as string - If all you modules are in-package then set
asyncflag to false (300 bytes less) - If async require fails (status code will be >= 400) loader will return
undefined(LMD doesn't re-request on error) - If you are performing parallel loading of the same resource add
race: true(Disabled by default) flag to prevent duplication of requests. - You can set both flags
cacheandcache_asyncto true to enable localStorage cache forrequire.async()(see Local Storage cache) - You can require plain off-package modules by declaring one of flags
async_plainorasync_plainonly
// Valid
(function (require, exports, module) {
/* Module content */
})
// Invalid! - parse error in loader's eval
function (require, exports, module) {
/* Module content */
}
// Bad but valid: module name will leak in global variables
function module(require, exports, module) {
/* Module content */
}Example
(function main(require) {
// async require of off-package module
require.async('/css/_engine.css', function (css) {
console.log('1', css.length); // result
// require of module loaded async (already registered)
console.log('2', require('/css/_engine.css').length);
// require of in-package module
console.log('3', require('pewpew'));
});
// async require of in-package module
require.async('pewpew', function (pewpew) {
console.log('4', pewpew);
});
})See examples/demos/basic for real life example