SlideShare uma empresa Scribd logo
1 de 14
TECH TALK#7: CUJO.JS
Project Owners
Brian Cavalier is a server-side Java guy turned
front-end engineer, and open source fanatic
working at VMware.

John Hann has been pushing the limits of the
web since 1996 and has been totally engulfed
in JavaScript, HTML, and CSS since 2004. He
works at VMware.
What is cujo?
• cujo is an architectural toolkit for next
  generation JavaScript applications. It
  encourages highly modular
  development, declarative
  application assembly, and embraces
  the asynchronous nature of JavaScript and its
  fusion of object-oriented and
  functional programming styles.
What is cujo?
• You focus on the business logic of your
  application components. cujo loads and
  assembles your components and then wires
  them all together.
What is cujo?
• “I'm also interested because while wire.js's
  declarative syntax isn't compile-to-js, it is in
  it's own way a separate language.”
What’s in cujo?
• curl.js: A small, fast AMD/CJS module loader
  with dependency management
• wire.js: A light, fast, flexible Javascript IOC
  container
• meld.js: AOP for JS with before, after,
  afterReturning, afterThrowing, around,
  pointcuts, and more
• when.js: A lightweight Promise and when()
  implementation, plus other async goodies
What’s in cujo?
• cram.js: A simple Javascript module
  concatenator
• poly.js: A modular, flexible set of ES5-ish
  shims
Concepts
General concepts
• IOC (Inversion of control)
• Dependency Inversion
• Application Composition
cujo concepts
•   Wire specs
•   Contexts
•   Components
•   Factories
•   Proxies
•   Component Lifecycle
•   Facets
•   References
•   Connections
Break Down
connections
•   Dependency Injection
•   DOM events
•   Javascript to Javascript "events”
•   Aspect Oriented Programming (AOP) advice
components
• Simple Types
• Application Components
  – module, create, compose, literal
  – wire: recursively invokes wire on another wire
    spec
• Function Components
THANK YOU~

Mais conteúdo relacionado

Mais procurados

Ruby on Rails Crash course
Ruby on Rails Crash courseRuby on Rails Crash course
Ruby on Rails Crash course
andreanodari
 

Mais procurados (20)

Workflow driven development
Workflow driven developmentWorkflow driven development
Workflow driven development
 
Web application I have always dreamt of
Web application I have always dreamt ofWeb application I have always dreamt of
Web application I have always dreamt of
 
IT_ Course Introduction PPT
IT_ Course Introduction PPTIT_ Course Introduction PPT
IT_ Course Introduction PPT
 
Architecture - why so serious?
Architecture - why so serious?Architecture - why so serious?
Architecture - why so serious?
 
Let's vue
Let's vueLet's vue
Let's vue
 
DeveloperDeveloperDeveloper! Sydney 2012
DeveloperDeveloperDeveloper! Sydney 2012DeveloperDeveloperDeveloper! Sydney 2012
DeveloperDeveloperDeveloper! Sydney 2012
 
JavaEE Microservices platforms
JavaEE Microservices platformsJavaEE Microservices platforms
JavaEE Microservices platforms
 
JSON all the way
JSON all the wayJSON all the way
JSON all the way
 
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
 
Backbonemeetup
BackbonemeetupBackbonemeetup
Backbonemeetup
 
Entity Framework Core 1.0
Entity Framework Core 1.0Entity Framework Core 1.0
Entity Framework Core 1.0
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development
 
Entity Framework 7: What's New?
Entity Framework 7: What's New?Entity Framework 7: What's New?
Entity Framework 7: What's New?
 
2015 UJUG, MVC 1.0 portion
2015 UJUG, MVC 1.0 portion2015 UJUG, MVC 1.0 portion
2015 UJUG, MVC 1.0 portion
 
Ruby on Rails Crash course
Ruby on Rails Crash courseRuby on Rails Crash course
Ruby on Rails Crash course
 
Swarms: introduction
Swarms: introductionSwarms: introduction
Swarms: introduction
 
UWP apps development - Part 2
UWP apps development - Part 2UWP apps development - Part 2
UWP apps development - Part 2
 
Modern java script features
Modern java script featuresModern java script features
Modern java script features
 
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
 
Serverless architecture
Serverless architectureServerless architecture
Serverless architecture
 

Semelhante a Intro cujojs

Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NET
Alan Hecht
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Jeremy Likness
 
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
Simplilearn
 
Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to Spring
Sujit Kumar
 

Semelhante a Intro cujojs (20)

Oracle application container cloud back end integration using node final
Oracle application container cloud back end integration using node finalOracle application container cloud back end integration using node final
Oracle application container cloud back end integration using node final
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NET
 
No Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueNo Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with Bootique
 
Top 10 frameworks of node js
Top 10 frameworks of node jsTop 10 frameworks of node js
Top 10 frameworks of node js
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
 
Java 8: Nashorn & avatar.js di Enrico Risa al JUG Roma
Java 8: Nashorn & avatar.js di Enrico Risa al JUG RomaJava 8: Nashorn & avatar.js di Enrico Risa al JUG Roma
Java 8: Nashorn & avatar.js di Enrico Risa al JUG Roma
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Meanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore ChandraMeanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore Chandra
 
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
React vs Vue JS Explained | Vue JS vs React Which Is Better? | Vue JS for Beg...
 
Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to Spring
 
Spring
SpringSpring
Spring
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 

Intro cujojs

  • 2. Project Owners Brian Cavalier is a server-side Java guy turned front-end engineer, and open source fanatic working at VMware. John Hann has been pushing the limits of the web since 1996 and has been totally engulfed in JavaScript, HTML, and CSS since 2004. He works at VMware.
  • 3. What is cujo? • cujo is an architectural toolkit for next generation JavaScript applications. It encourages highly modular development, declarative application assembly, and embraces the asynchronous nature of JavaScript and its fusion of object-oriented and functional programming styles.
  • 4. What is cujo? • You focus on the business logic of your application components. cujo loads and assembles your components and then wires them all together.
  • 5. What is cujo? • “I'm also interested because while wire.js's declarative syntax isn't compile-to-js, it is in it's own way a separate language.”
  • 6. What’s in cujo? • curl.js: A small, fast AMD/CJS module loader with dependency management • wire.js: A light, fast, flexible Javascript IOC container • meld.js: AOP for JS with before, after, afterReturning, afterThrowing, around, pointcuts, and more • when.js: A lightweight Promise and when() implementation, plus other async goodies
  • 7. What’s in cujo? • cram.js: A simple Javascript module concatenator • poly.js: A modular, flexible set of ES5-ish shims
  • 9. General concepts • IOC (Inversion of control) • Dependency Inversion • Application Composition
  • 10. cujo concepts • Wire specs • Contexts • Components • Factories • Proxies • Component Lifecycle • Facets • References • Connections
  • 12. connections • Dependency Injection • DOM events • Javascript to Javascript "events” • Aspect Oriented Programming (AOP) advice
  • 13. components • Simple Types • Application Components – module, create, compose, literal – wire: recursively invokes wire on another wire spec • Function Components

Notas do Editor

  1. This template can be used as a starter file for presenting training materials in a group setting.SectionsRight-click on a slide to add sections. Sections can help to organize your slides or facilitate collaboration between multiple authors.NotesUse the Notes section for delivery notes or to provide additional details for the audience. View these notes in Presentation View during your presentation. Keep in mind the font size (important for accessibility, visibility, videotaping, and online production)Coordinated colors Pay particular attention to the graphs, charts, and text boxes.Consider that attendees will print in black and white or grayscale. Run a test print to make sure your colors work when printed in pure black and white and grayscale.Graphics, tables, and graphsKeep it simple: If possible, use consistent, non-distracting styles and colors.Label all graphs and tables.
  2. Give a brief overview of the presentation. Describe the major focus of the presentation and why it is important.Introduce each of the major topics.To provide a road map for the audience, you can repeat this Overview slide throughout the presentation, highlighting the particular topic you will discuss next.
  3. This is another option for an Overview slides using transitions.