Guy Bedford explains jspm and SystemJS which he created to simplify JS loading and package management. Load CommonJS, AMD, and ES6 modules in a simple and unified manner based on the ES6 Module Loader polyfill.


JavaScript module loading has traditionally been difficult due to diverse module formats and difficult configuration. With so many competing standards it is hard to get everything to work well together.


Guy has come forward with a solution which simplifies loading and management of JS packages. This is a full workflow solution including both dynamic loading and capability to build bundles for production.


Episode InfoEpisode NotesSimple example of SystemJS in browserLinksVideosOther podcasts

Episode Info

Episode: CW 008
Published: July 2nd, 2014
Tags: nodejs, js,es6,commonjs,amd,es6,packages,modules,jsconf
Duration: 22:12

Episode Notes

03:00 - es6-module-loader
04:25 - CommonJS, AMD, ES6 modules. Browserify
05:10 - SystemJS - loads ES6 modules, AMD, CommonJS and global scripts. Designed in spec itself, IE8+, suitable for production, runs in browser and Node.js, promises API
08:00 - SystemJS workflow - dynamic loading and build capability
10:00 - Using SystemJS with build tools
10:30 - SystemJS community
11:30 - Auto file type detection (CJS, AMD, UMD, …) or can specify
12:45 - Optional configuration. Made to be as easy as possible to get going
14:30 - jspm - JavaScript Package Manager - CDN for SystemJS, require by name.
15:30 - Core ideas - making requiring really simple and making package management really simple
16:00 - Design of loader and manager
17:28 - Ready for review and full workflow. An invitation to the community
18:26 - GitHub locations for projects, examples
20:34 - How to follow up, closing remarks

Simple example of SystemJS in browser
<script src="system.js"></script>
<script>
System.import('app/app')
.catch(function(e) {
// we add this since promises suppress all errors
setTimeout(function() {
throw e;
});
});
</script>
Links

es6-module-loader - ES6 module loader polyfill
SystemJS - Spec-compliant universal module loader - loads ES6 modules, AMD, CommonJS and global scripts.
SystemJS-Build-Tool - Build tool for SystemJS which can bundle for production
jspm - Package manager for the SystemJS universal module loader, built on top of the dynamic ES6 module loader. Load any module format (ES6, AMD, CommonJS and globals) directly from endpoints such as npm and github with flat versioned dependency management. For production, use the jspm CLI tool to download packages locally, lock down versions and build into a bundle. In development, load modules directly from CDN for frictionless experimentation, switching into production on the same code with a single configuration change. Supports SPDY with server push.
jspm-es6-demo - jspm ES6 module loading workflow demo - write ES6 modules, load external from CDN, install locally using CDN versions, bundle into single file for production
jspm Google Group - Discussion forum for JSPM
Guy Bedford’s Twitter
Guy Bedford’s GitHub repositories
Jeff Barczewski, Founder, CodeWinds twitter
CodeWinds twitter

Videos

Fluent Conf 2014 - Guy Bedford on ES6 modules, jspm, SystemJS
Mountain West JS 2014 - Guy Bedford on the genesis of jspm, SystemJS
JSConf 2014 videos - Videos from the JSConf 2014 sessions (videos are in progress of being posted)

Other podcasts

JSJabber 115

Twitter Mentions