SlideShare una empresa de Scribd logo
1 de 22
Its Primetime: a JavaScript story




            Power point template by
               Colin Eberhardt
Agenda



Modules

MVVM

Decoupling in the client

Testing JavaScript
Who am I




                 Einar Ingebrigtsen




       @einari           einar@dolittle.com


                      http_//www.dolittle.com
                        http://blog.dolittle.com
                 http://www.ingebrigtsen.info
Confession time..




I am a recovering JavaScript hater
Houston we have a….




There are only two problems with
           JavaScript
Java
  &
Script
… actually, there is a third problem…




              DDD
     DOM Driven Development
… and kinda, a fourth problem as well..




People thinking that we
 need to fix JavaScript
… it all begins with $
… it all begins with $



Polluted CSS selectors

Passive views

Hard to test

Heavy coupling

Couples JavaScript (business logic) to DOM
MVVM


Based on Presentation Model by Martin Fowler
 http://martinfowler.com/eaaDev/PresentationModel.html


Commonly used in the XAML stack
 WPF
 Silverlight
 WP7
 WP8
 Windows RT / Store Apps
MVVM


                  Model   Get from server




           View


Observes
                          Observable
             ViewModel
Decouple




Make many small applications

Compose together
EventAggregator


 ViewModel        ViewModel
JavaScript: The Good Parts
Summary
KnockoutJS
http://knockoutjs.com


RequireJS
http://requirejs.org

Forseti
http://github.com/dolittle/forseti


Bifrost
http://bifrost.dolittle.com

Please rate the talk at
http://tinyurl.com/JavaScriptStory




   http://blog.dolittle.com http://bifrost.dolittle.com
Thanks for your
   attention
It's Primetime: A Javascript Story

Más contenido relacionado

Destacado

Role playing aula de geografía e historia
Role playing aula de geografía e historiaRole playing aula de geografía e historia
Role playing aula de geografía e historiaDiego Sobrino López
 
Mapa mental el computador
Mapa mental el computadorMapa mental el computador
Mapa mental el computadorGrupoLGR
 
Mapa conceptual Arquitecto de Software
Mapa conceptual Arquitecto de SoftwareMapa conceptual Arquitecto de Software
Mapa conceptual Arquitecto de SoftwareTrabajo92
 
Clasificacion de las computadoras
Clasificacion de las computadorasClasificacion de las computadoras
Clasificacion de las computadorasBladimir Escobar
 
Mapa conceptual de la computadora
Mapa conceptual de la computadora Mapa conceptual de la computadora
Mapa conceptual de la computadora lechugafelis
 
introducción a la computación
introducción a la computación introducción a la computación
introducción a la computación Sandra Yamile
 
Mapa mental de hardware y software
Mapa mental  de hardware y softwareMapa mental  de hardware y software
Mapa mental de hardware y softwareluzeiitha
 
Linea del tiempo de las computadoras
Linea del tiempo de las computadorasLinea del tiempo de las computadoras
Linea del tiempo de las computadorasalexiacasanova
 
Mapa conceptual de hardware y software
Mapa conceptual de hardware y softwareMapa conceptual de hardware y software
Mapa conceptual de hardware y softwarejosefinaconca
 
Mapa conceptual de la computadora
Mapa conceptual de la computadoraMapa conceptual de la computadora
Mapa conceptual de la computadoraMarumanzi
 
Mapa Conceptual de Clasificacion de software
Mapa Conceptual de Clasificacion de softwareMapa Conceptual de Clasificacion de software
Mapa Conceptual de Clasificacion de softwarePedroQuezada01
 
Mapa mental computadoras
Mapa mental computadorasMapa mental computadoras
Mapa mental computadorasyuossef
 
Tecnicas de comunicacion grupal
Tecnicas de comunicacion grupalTecnicas de comunicacion grupal
Tecnicas de comunicacion grupaljuancarlosmarinp
 
Software mapa conceptual
Software mapa conceptualSoftware mapa conceptual
Software mapa conceptualxJoaquinx
 
Linea del tiempo de las computadoras
Linea del tiempo de las computadorasLinea del tiempo de las computadoras
Linea del tiempo de las computadorasMariana Canto
 

Destacado (20)

Mapa conceptual de software
Mapa conceptual de softwareMapa conceptual de software
Mapa conceptual de software
 
Role playing aula de geografía e historia
Role playing aula de geografía e historiaRole playing aula de geografía e historia
Role playing aula de geografía e historia
 
Mapa mental el computador
Mapa mental el computadorMapa mental el computador
Mapa mental el computador
 
Mapa conceptual Arquitecto de Software
Mapa conceptual Arquitecto de SoftwareMapa conceptual Arquitecto de Software
Mapa conceptual Arquitecto de Software
 
Mapa mental conceptual cuadro
Mapa mental conceptual cuadroMapa mental conceptual cuadro
Mapa mental conceptual cuadro
 
Clasificacion de las computadoras
Clasificacion de las computadorasClasificacion de las computadoras
Clasificacion de las computadoras
 
Computadora esquema
Computadora esquemaComputadora esquema
Computadora esquema
 
Mapa conceptual de la computadora
Mapa conceptual de la computadora Mapa conceptual de la computadora
Mapa conceptual de la computadora
 
introducción a la computación
introducción a la computación introducción a la computación
introducción a la computación
 
Sliderhare
SliderhareSliderhare
Sliderhare
 
Mapa mental de hardware y software
Mapa mental  de hardware y softwareMapa mental  de hardware y software
Mapa mental de hardware y software
 
Linea del tiempo de las computadoras
Linea del tiempo de las computadorasLinea del tiempo de las computadoras
Linea del tiempo de las computadoras
 
Tecnica para conducir procesos de capacitacion
Tecnica para conducir procesos de capacitacionTecnica para conducir procesos de capacitacion
Tecnica para conducir procesos de capacitacion
 
Mapa conceptual de hardware y software
Mapa conceptual de hardware y softwareMapa conceptual de hardware y software
Mapa conceptual de hardware y software
 
Mapa conceptual de la computadora
Mapa conceptual de la computadoraMapa conceptual de la computadora
Mapa conceptual de la computadora
 
Mapa Conceptual de Clasificacion de software
Mapa Conceptual de Clasificacion de softwareMapa Conceptual de Clasificacion de software
Mapa Conceptual de Clasificacion de software
 
Mapa mental computadoras
Mapa mental computadorasMapa mental computadoras
Mapa mental computadoras
 
Tecnicas de comunicacion grupal
Tecnicas de comunicacion grupalTecnicas de comunicacion grupal
Tecnicas de comunicacion grupal
 
Software mapa conceptual
Software mapa conceptualSoftware mapa conceptual
Software mapa conceptual
 
Linea del tiempo de las computadoras
Linea del tiempo de las computadorasLinea del tiempo de las computadoras
Linea del tiempo de las computadoras
 

Similar a It's Primetime: A Javascript Story

MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross IntroductionStuart Lodge
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross SeminarXamarin
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassSpike Brehm
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptFirdaus Adib
 
Javascript Unittesting with js-test-driver
Javascript Unittesting with js-test-driverJavascript Unittesting with js-test-driver
Javascript Unittesting with js-test-driverwesthoff
 
Java Programming
Java ProgrammingJava Programming
Java ProgrammingTracy Clark
 
Lightning Talk: JavaScript Error Handling
Lightning Talk: JavaScript Error HandlingLightning Talk: JavaScript Error Handling
Lightning Talk: JavaScript Error HandlingNick Burwell
 
(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS UniverseStefano Di Paola
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1晟 沈
 
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornIsomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornMaxime Najim
 
JavaScript Best Pratices
JavaScript Best PraticesJavaScript Best Pratices
JavaScript Best PraticesChengHui Weng
 
Maintainable Javascript carsonified
Maintainable Javascript carsonifiedMaintainable Javascript carsonified
Maintainable Javascript carsonifiedChristian Heilmann
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptKevin Read
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Kevin Read
 
Modern Web Technologies
Modern Web TechnologiesModern Web Technologies
Modern Web TechnologiesPerttu Myry
 
Sandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession LearnedSandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession LearnedMinded Security
 

Similar a It's Primetime: A Javascript Story (20)

MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Javascript Unittesting with js-test-driver
Javascript Unittesting with js-test-driverJavascript Unittesting with js-test-driver
Javascript Unittesting with js-test-driver
 
SFScon 21 - Davide Montesin - Typescript vs. Java
SFScon 21 - Davide Montesin - Typescript vs. JavaSFScon 21 - Davide Montesin - Typescript vs. Java
SFScon 21 - Davide Montesin - Typescript vs. Java
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
Lightning Talk: JavaScript Error Handling
Lightning Talk: JavaScript Error HandlingLightning Talk: JavaScript Error Handling
Lightning Talk: JavaScript Error Handling
 
(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
 
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with NashornIsomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
 
JavaScript Best Pratices
JavaScript Best PraticesJavaScript Best Pratices
JavaScript Best Pratices
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Maintainable Javascript carsonified
Maintainable Javascript carsonifiedMaintainable Javascript carsonified
Maintainable Javascript carsonified
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
 
Enterprise TypeScript
Enterprise TypeScriptEnterprise TypeScript
Enterprise TypeScript
 
Modern Web Technologies
Modern Web TechnologiesModern Web Technologies
Modern Web Technologies
 
Sandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession LearnedSandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession Learned
 

Más de Einar Ingebrigtsen

Making your application realtime with signal r
Making your application realtime with signal rMaking your application realtime with signal r
Making your application realtime with signal rEinar Ingebrigtsen
 
Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012Einar Ingebrigtsen
 
Closing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRTClosing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRTEinar Ingebrigtsen
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
Sugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a timeSugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a timeEinar Ingebrigtsen
 

Más de Einar Ingebrigtsen (10)

Making your application realtime with signal r
Making your application realtime with signal rMaking your application realtime with signal r
Making your application realtime with signal r
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012
 
Developing on Windows 8
Developing on Windows 8Developing on Windows 8
Developing on Windows 8
 
Windows 8 BootCamp
Windows 8 BootCampWindows 8 BootCamp
Windows 8 BootCamp
 
Closing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRTClosing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRT
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Sugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a timeSugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a time
 

It's Primetime: A Javascript Story

Notas del editor

  1. jQueryCoupling
  2. TypeScriptCoffeeScript
  3. Douglas Crawford / Yahoo - YUI
  4. Douglas Crawford / Yahoo - YUI
  5. Douglas Crawford / Yahoo - YUI