13
{ Progressive Loading with steal Austin McDaniel @js_consultant

Progressive loading with Steal

Embed Size (px)

DESCRIPTION

Large one page JavaScript have applications have big downloads for all their assets. This talk demonstrates the problems you encounter when trying to split up these applications and introduces a new enhancement still in beta to JavaScriptMVC's Steal dependency management system that uses direct acyclic graphs to intelligently split up the assets in a manner they can be packaged in the most efficient manner possible.

Citation preview

Page 1: Progressive loading with Steal

{

Progressive Loadingwith steal

Austin McDaniel @js_consultant

Page 2: Progressive loading with Steal

Big apps have big downloads…

Page 3: Progressive loading with Steal

Apps on top of apps…

App 1

App 2

App 3

Main ApplicationHandles Authentication

Opening other apps

Page 4: Progressive loading with Steal

Widgets inside of widgetsinside of other widgets inside of other widgets inside of other widgets…

App A

Main Application

App B App C App D

Modal Combo box

Page 5: Progressive loading with Steal

Steal to the rescue…

Page 6: Progressive loading with Steal

Directed acyclic graphs…

Page 7: Progressive loading with Steal

The graph…

AppA.js

Main Application

AppB.js AppC.js AppD.js

Modal Combo box

AppA_AppB.js AppB_AppC_AppD.js

Page 8: Progressive loading with Steal

steal(’main’)

.packages(‘app/appa.js’,

‘app/appb.js’,

‘app/appc.js’)

API

Page 9: Progressive loading with Steal

$(‘.tab’).click(function(){

steal(‘app/appa.js’)

});

Then when you need it…

Page 10: Progressive loading with Steal

steal.packages(, ‘app/appa.js’: ‘app/packages/appb.js’ })

steal.p.make({ src: ‘appa.js’, has: *‘app/jquery.js’+ })

steal.p.make({ src: ‘app/packages/appa.js’, needs: *‘app/appa_appb.js’+ })

What it generates…

Page 11: Progressive loading with Steal

Demo of it running and in action….

Page 12: Progressive loading with Steal

Any Questions?

Page 13: Progressive loading with Steal

https://github.com/jupiterjs/steal/tree/packages

Try it out…