h-ubu - CDI in JavaScript

30
h-ubu CDI in JavaScript Clement Escoffier Dynamis Technologies

Transcript of h-ubu - CDI in JavaScript

Page 1: h-ubu - CDI in JavaScript

h-ubuCDI in JavaScript

Clement Escoffier

Dynamis Technologies

Page 2: h-ubu - CDI in JavaScript
Page 3: h-ubu - CDI in JavaScript
Page 4: h-ubu - CDI in JavaScript

How do we do that in Java ?

Page 5: h-ubu - CDI in JavaScript
Page 6: h-ubu - CDI in JavaScript

Components

Page 7: h-ubu - CDI in JavaScript

Interfaces

Page 8: h-ubu - CDI in JavaScript

DependencyInjection

Page 9: h-ubu - CDI in JavaScript

What do we havein JavaScript ?

Page 10: h-ubu - CDI in JavaScript

Module Patterns

+ -Fix visibility A bit complex

No interfaces

Page 11: h-ubu - CDI in JavaScript

Module loaders

+ -Avoid <script>

TransitiveReuse

Hard-codeddependencies

Page 12: h-ubu - CDI in JavaScript

MVC / MVVM

+ -Code

organizationUI Bindings

Pushingthe limits

Page 13: h-ubu - CDI in JavaScript

Well, so what’sh-ubu ?

Page 14: h-ubu - CDI in JavaScript

Service-basedInjection

Framework

Page 15: h-ubu - CDI in JavaScript

hub

Page 16: h-ubu - CDI in JavaScript

components

Page 17: h-ubu - CDI in JavaScript

var component = {configure : function(hub, conf) { },getComponentName : function() { },start : function() { },stop : function() {}

};

hub.registerComponent(component).start()

Page 18: h-ubu - CDI in JavaScript

contracts

Page 19: h-ubu - CDI in JavaScript

var myService= {doSomething : function() {}

}

Page 20: h-ubu - CDI in JavaScript

services

Page 21: h-ubu - CDI in JavaScript

servicesServiceRegistry

1 - Publication2 – Lookup,Service Listener 3 - Binding

Page 22: h-ubu - CDI in JavaScript

Why services ?

SubstitutabilityLoose-coupling

TestableDynamic

Page 23: h-ubu - CDI in JavaScript

var provider = {configure : function(hub, conf) {

hub.provideService({component: this,contract: myService

});},getComponentName : function() { },start : function() { },stop : function() {},doSomething : function() { … }

}

Page 24: h-ubu - CDI in JavaScript

var consumer = {configure : function(hub, conf) {

hub.requireService({component: this,contract: myService,field: "svc"

});},getComponentName : function() { },start : function() {},stop : function() {},work : function() {

this.svc.doSomething();}

}

Page 25: h-ubu - CDI in JavaScript

var consumer = {configure : function(hub, conf) {

hub.requireService({component: this,contract: myService,field: "svc"

});},getComponentName : function() { },start : function() {},stop : function() {},work : function() {

this.svc.doSomething();}

}

Proxy

Page 26: h-ubu - CDI in JavaScript

events

Page 27: h-ubu - CDI in JavaScript

var publisher = {configure : function(hub, conf) {}getComponentName : function() { },start : function() {},stop : function() {},work : function() {

this.hub.publish(this, "my/topic", event);

}}

Page 28: h-ubu - CDI in JavaScript

var receiver = {configure : function(hub, conf) {

hub.subscribe(this, "my/(.)*?", this.receive);

},getComponentName : function() { },start : function() {},stop : function() {},receive: function(event) { }

}

Page 29: h-ubu - CDI in JavaScript

Modularize yourJavaScript

require.js/node.jsComposition

StandaloneConfigurability

Page 30: h-ubu - CDI in JavaScript

http://nanoko-project.github.com/h-ubu/snapshot/

h buStop hacking,

Start composing