-
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-type
to 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
async
flag 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
cache
andcache_async
to true to enable localStorage cache forrequire.async()
(see Local Storage cache) - You can require plain off-package modules by declaring one of flags
async_plain
orasync_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