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 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>
  .catch(function(e) {
    // we add this since promises suppress all errors
    setTimeout(function() {
      throw e;
  • 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


Other podcasts