Embedjs

Preview:

DESCRIPTION

EmbedJS talk from DojoConf 2011

Citation preview

embedjs

dojoconf 2011

Nikolai Onkenuxebu

Friday, September 16, 11

@nonken

Friday, September 16, 11

Friday, September 16, 11

We open the mobile web.

Friday, September 16, 11

How you totally should write code

Friday, September 16, 11

Lets look at

Friday, September 16, 11

Lets look at

1. embedjs

Friday, September 16, 11

Lets look at

1. embedjs

2. embedjs features

Friday, September 16, 11

embedjs

Friday, September 16, 11

History

Friday, September 16, 11

Friday, September 16, 11

Objective-C

Friday, September 16, 11

Objective-C Symbian C

Friday, September 16, 11

Objective-C JavaSymbian C

Friday, September 16, 11

Objective-C JavaSymbian C

Java

Friday, September 16, 11

Objective-C JavaSymbian C

.NETJava

Friday, September 16, 11

Objective-C JavaSymbian C

.NETJava ...

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

http://www.flickr.com/photos/tacoekkel/25538919/

Friday, September 16, 11

http://www.flickr.com/photos/hugo90/3916794427/

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

At RuntimeAt Build Time

Friday, September 16, 11

Shrink and customize your API

Friday, September 16, 11

25kB

Shrink and customize your API

Friday, September 16, 11

25kB

Shrink and customize your API

Friday, September 16, 11

25kB 8kB

Shrink and customize your API

Friday, September 16, 11

vs.

Simple queries > simple library functionOnly ".class" and "#id" queries

Friday, September 16, 11

vs.

Simple queries > simple library functionOnly ".class" and "#id" queries

Full fledged queries > Full blown library function

Friday, September 16, 11

vs.

Simple queries > simple library functionOnly ".class" and "#id" queries

Full fledged queries > Full blown library function

13 LOC

~200 LOC

Friday, September 16, 11

Friday, September 16, 11

dojo-blackberry.js

Friday, September 16, 11

dojo-blackberry.js

dojo-blackberry46.js

Friday, September 16, 11

dojo-blackberry.js

dojo-blackberry46.js

dojo-nokia-wrt.js

Friday, September 16, 11

dojo-blackberry.js

dojo-blackberry46.js

dojo-nokia-wrt.js

dojo-opera.js

Friday, September 16, 11

dojo-blackberry.js

dojo-blackberry46.js

dojo-nokia-wrt.js

dojo-opera.js

dojo-webkit-mobile.js

Friday, September 16, 11

dojo-blackberry.js

dojo-blackberry46.js

dojo-nokia-wrt.js

dojo-opera.js

dojo-webkit-mobile.js

dojo-windows-mobile.js

Friday, September 16, 11

• Know the platform you are targeting

• Are developing apps using PhoneGap

Perfect for when you

Friday, September 16, 11

embedjs features

Friday, September 16, 11

• We need: AMD compatible modules

• We need: has.js (Peters talk)

• We need: require ‘feature’ plugin

Embedjs builds vs. feature detection -

mwuahahaha

Friday, September 16, 11

Meet embedjs ‘features’building cross device apps

Friday, September 16, 11

Work with features and consistent APIs

Don’t branch your code

Friday, September 16, 11

Not cool

Friday, September 16, 11

Not cool

Friday, September 16, 11

Works:

Friday, September 16, 11

Works:

Friday, September 16, 11

Works:

Friday, September 16, 11

Works:

Friday, September 16, 11

vs

Friday, September 16, 11

Friday, September 16, 11

Implementing features is simple:

Friday, September 16, 11

Defining features is super simple:

Friday, September 16, 11

Requiring features is even simpler:

Friday, September 16, 11

• Ship everything and do feature tests at runtime

• Make targeted builds using specific implementations

Two ways you can run a build

Friday, September 16, 11

Runtime detection:

./buildj.sh name=../../src/js/main out=../../debug/js/main.js baseUrl=../../src/js/ paths.implementations=implementations/dynamic paths.feature=lib/feature

Friday, September 16, 11

Targeted build:

./buildj.sh name=../../src/js/main out=../../debug/js/main.js baseUrl=../../src/js/ paths.implementations=implementations/touch paths.feature=lib/feature

Friday, September 16, 11

Lets see this in the browser

Friday, September 16, 11

• EmbedJS in publishing

Does it work in real life?

Friday, September 16, 11

• http://embedjs.org

• http://github.com/uxebu/embedjs (AMD branch)

Where to get it

Friday, September 16, 11

• Lots of highly optimized CommonJS compatible modules

• Mobile optimized features (components)

• Development patterns / paradigms for cross device development

The future of embedjs

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Friday, September 16, 11

Dojo.beer tonight

Friday, September 16, 11

Questions?

Friday, September 16, 11

@nonken

http://uxebu.com - @uxebu

Friday, September 16, 11