
externalize
Create external Browserify bundles for lazy asynchronous loading
Introduction to asynchronous module loading with Browserify:
http://esa-matti.suuronen.org/blog/2013/04/15/asynchronous-module-loading-with-browserify/
Install
npm install externalize
API
The module exports a single function
externalize(
<parent bundle or array of parent bundles>,
<bundle or arrays of bundles to be externalized from the parent bundles>,
<callback fucntion>
);
Example
Create two bundles where the second one is a subset of the parent and call
externalize(parent, subset, callback) on them. It will do following:
- Moves all modules that are used in both to the parent one
- Removes those modules from the parent one that are explicitly requireable
in the subset one
- It generally tries to do the "right thing"
in code:
var fs = require("fs");
var browserify = require("browserify");
var externalize = require("externalize");
var parent = browserify("./index.js");
var subset = browserify().require("./external.js");
externalize(parent, subset, function(err) {
if (err) throw err;
parent.bundle().pipe(fs.createWriteStream("bundle/parent.js"));
subset.bundle().pipe(fs.createWriteStream("bundle/subset.js"));
});
index.js:
jQuery.getScript("bundle/subset.js", function(){
var value = require("./external");
alert("external module: " + value);
});
external.js:
module.exports = "external module contents";
Script loaders
You need a script loader to load the external bundles. There is one in
jQuery. If you don't use jQuery you can grab $script.js
from npm or implement your own for modern browsers
easily.
Some others include: