modular angular: apps that scale (ng-vegas)

34
Modular Angular: Apps that Scale @bendrucker

Upload: ben-drucker

Post on 25-Jul-2015

246 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Modular Angular: Apps that Scale (ng-vegas)

Modular Angular: Apps that Scale

@bendrucker

Page 2: Modular Angular: Apps that Scale (ng-vegas)

Developers Love Him!

He is 21Has 190 reposLocal developer exposes shocking web development secret. Learn the free trick to his stunning results.

LEARN THE TRUTH NOW

Page 3: Modular Angular: Apps that Scale (ng-vegas)

1. Why you need a module loader

2. Intro to Browserify

3. Why small, composable modules are the future

Page 4: Modular Angular: Apps that Scale (ng-vegas)

Why do I need a module loader?

1

Page 5: Modular Angular: Apps that Scale (ng-vegas)

Straw Poll

Page 6: Modular Angular: Apps that Scale (ng-vegas)

Bower

Page 7: Modular Angular: Apps that Scale (ng-vegas)

Bower Features

• Package manager for the client side

• Download packages from a git repository

• Handle semantic versioning

• Download dependencies

Page 8: Modular Angular: Apps that Scale (ng-vegas)

Semantic Versioning

Give me angular@~1.3.13

I installed [email protected]

Page 9: Modular Angular: Apps that Scale (ng-vegas)

Dependencies

Page 10: Modular Angular: Apps that Scale (ng-vegas)

Vomit All Problems Onto User

Page 11: Modular Angular: Apps that Scale (ng-vegas)

Dependency Graph

AppA B C

D E F G H

Page 12: Modular Angular: Apps that Scale (ng-vegas)

ABCDEFGH

Page 13: Modular Angular: Apps that Scale (ng-vegas)
Page 14: Modular Angular: Apps that Scale (ng-vegas)

<script> tags

Page 15: Modular Angular: Apps that Scale (ng-vegas)
Page 16: Modular Angular: Apps that Scale (ng-vegas)

Ben, of course I don’t use

script tags. I use gulp-concat.

Page 17: Modular Angular: Apps that Scale (ng-vegas)

Concatenating your files is <script> tags with fewer HTTP requests

Page 18: Modular Angular: Apps that Scale (ng-vegas)
Page 19: Modular Angular: Apps that Scale (ng-vegas)

Why We Need a Module Loader

• We want to build our apps without manually specifying every script in order

• We want dependencies without conflict vomit

• There are 146,330 packages on npm and it would be nice to use them

1

Page 20: Modular Angular: Apps that Scale (ng-vegas)

Intro to

2

Page 21: Modular Angular: Apps that Scale (ng-vegas)

Browserify understands Node’s require algorithm and builds a single script

that can run in the browser

Page 22: Modular Angular: Apps that Scale (ng-vegas)

module.exports = require('angular') .module('myApp', [ require('angular-resource'), require('angular-messages') ]) .name

Page 23: Modular Angular: Apps that Scale (ng-vegas)

// node_modules/angular-resource/index.js

require('./angular-resource') module.exports = 'ngResource'

Page 24: Modular Angular: Apps that Scale (ng-vegas)

browserify -e app.js > dist/app.js

Page 25: Modular Angular: Apps that Scale (ng-vegas)

We want to build our apps without manually specifying

every script in order

Page 26: Modular Angular: Apps that Scale (ng-vegas)

npm install --save angular dog-names

Page 27: Modular Angular: Apps that Scale (ng-vegas)

Access to 146,330 packages on npm

Page 28: Modular Angular: Apps that Scale (ng-vegas)

node_modules is nested• node_modules/• angular-credit-cards/• node_modules/• ap/• creditcards/• node_modules/• camel-case/• creditcards-types/• fast-luhn/

Page 29: Modular Angular: Apps that Scale (ng-vegas)

Dependencies without

conflict vomit

Page 30: Modular Angular: Apps that Scale (ng-vegas)

Future of JS

3

Page 31: Modular Angular: Apps that Scale (ng-vegas)

Goal:

Use Less Angular

Page 32: Modular Angular: Apps that Scale (ng-vegas)

angular-payments

vs.

jQuery.payment

vs.

angular-credit-cards

Page 34: Modular Angular: Apps that Scale (ng-vegas)

Thank You!

@bendrucker bendrucker.me

github.com/bendrucker