SlideShare uma empresa Scribd logo
1 de 38
Quique Fdez. Guerra
Software Dev. Engineer
Plainconcepts
@CKGrafico
YO SOLO TE PEDÍ UN
PLÁTANO...
Info@plainconcepts.com
Avinguda Josep Tarradellas, 10, 6º 1ª
08029 Barcelona, España
+34 93 3607 114
Barcelona
helpdev.org
Joe Armstrong, Erlang
¿RECUERDAS?
SPA
Después de varios años el desarrollo a
evolucionado bastante.
Empieza el declive de flash y nacen
tecnologías como Backbone o Ember.
Nacen Angular y Bootstrap.
Nacen NodeJS y NPM.
Testing en Frontend.
Ajax y jQuery
Primer gran cambio en el
paradigma, se empiezan a utilizar
para descargar datos, animaciones
sencillas o crear componentes con
algo de complejidad.
HISTORIA
JavaScript y CSS
Se utilizan para mejorar el aspecto
de las webs, todavía muy sencillos.
1995-1996
2005-2006
2009-2011
ES1 ES2 ES3 ES5 ES5.1
Polymer, React, Angular
La comunidad sigue evolucionando a
grandes pasos, Angular madura y nacen
tecnologías como Polymer o React.
Nace también Bower.
Testing empieza a coger importancia.
2012-2013
2014-2016
La nueva tecnología
Sigue evolucionando y durante esta
época nacen algunas tecnologías,
otras maduran y otras nacen y
mueren.
- Gulp y / Grunt
- / Less y SASS
- X CoffeScript y TypeScript
- X Bower
- X Flash
- Se asienta Angular 1.5
- Nace Angular 2 (beta)
- Testing y linting se vuelven básicos
JSON
(estándar)
ES6
¿?
Los componentes
Viendo la evolución en todas estas
tecnologías, podemos ver que el
presente y el futuro en la web son
los componentes y la reutilización
de estos.
ASÍ SE HACÍAN
LAS COSAS ANTES
Pre desarrollo
• Lenguajes a utilizar
HTML, CSS, JavaScript (ES3).
• Compatibilidad
Firefox, IE (if IE…).
• Librerías
Ninguna, jQuery/Mootols, etc.
• IDEs y Editores
VS, Frontpage, Dreamweaver, notepad,
etc.
• Metodología
‘Con cuidado’.
Orientación a eventos.
Orientación a prototipos.
Una aplicación – Muchas páginas.
• Problemas
Huella del desarrollador.
Crear las bases del proyecto.
Estructuración de hojas de estilos.
Carga de archivos.
Escalabilidad
Etc.
• Positivo
Sencillez para obtener un primer resultado.
Curva de aprendizaje de las librerías.
• Testing
(¿Aunque si lo haces durante mejor no?)
Sencillo o inexistente.
Unitarios.
Algo de UI.
• Mantenibilidad
Depende.
Desarrollo Post desarrollo
• Dependencias
Navegador
• Descarga
jQuery.com
LIBRERÍAS jQuery.com
ASÍ SE HACEN
LAS COSAS AHORA
• Lenguajes a utilizar
HTML, HAML, JADE
CSS, SASS, LESS, STYLUS + BEM, OOCSS
JavaScript (ES5, 6), Coffe, TypeScript
• Compatibilidad
Firefox, IE, Edge, Chrome, …
Responsive!!
Electron, Cordova, etc.
• Librerías
Angular, React, jQuery, Moment, Lodash,
RX, etc………
• IDEs y Editores
Visual Studio, Code, Atom, Sublime,
WebStorm, etc.
• Tareas
Gulp, grunt, webpack, jspmio (bundles)
• Dependencias
NPM, Bower?
Pre desarrollo
• Metodología
Orientado a componentes.
• Problemas
Los mismos (seguimos siendo
humanos) aunque se han reducido.
Curvas de aprendizaje.
Expertos en librerías.
• Positivo
Una app compleja debería ser más
sencilla de crear y mantener.
• Testing
Unitarios, mucho más
(Jasmine, Karma, etc.)
Algo de UI (Los seguimos
odiando)
• Mantenibilidad
Depende y siempre va a
depender.
Desarrollo Post desarrollo
• Lenguajes a utilizar
HTML, HAML, JADE
CSS, SASS, LESS, STYLUS + BEM, OOCSS
JavaScript (ES5, 6), Coffe, TypeScript
• Compatibilidad
Firefox, IE, Edge, Chrome, …
Responsive!!
Electron, Cordova, etc.
• Librerías
Angular, React, jQuery, Moment, Lodash,
RX, etc………
• IDEs y Editores
Visual Studio, Code, Atom, Sublime,
WebStorm, etc.
• Tareas
Gulp, grunt, webpack, jspmio (bundles)
• Dependencias
NPM, Bower?
Pre desarrollo
• Metodología
Orientado a componentes.
• Problemas
Los mismos (seguimos siendo
humanos) aunque se han reducido.
Curvas de aprendizaje.
Expertos en librerías.
• Positivo
Una app compleja debería ser más
sencilla de crear y mantener.
• Testing
Unitarios, mucho más
(Jasmine, Karma, etc.)
Algo de UI (Los seguimos
odiando)
• Mantenibilidad
Depende y siempre va a
depender.
Desarrollo Post desarrollo
• Dependencias
NodeJS (NPM)
• Descarga
Angular 2
jQuery
Lodash
• TypeScript
Typings
LIBRERÍAS
> npm init
> npm install --save angular2
> npm install --save jquery
> npm install --save lodash
> typings init
> typings install --save jquery
> typings install --save lodash
• Dependencias
NodeJS (NPM)
• Descarga
Gulpjs
gulp-eslint
gulp-sass-lint
gulp-typescript
gulp-inject
gulp-webserver
jasmine-core
karma & karma-jasmine &
karma-phantomjs-launcher &
karma-coverage
gulp-angular-protractor
run-sequence
TAREAS
> npm install gulp -g
> npm install --save-dev gulp-eslint
> npm install --save-dev gulp-sass-lint
> npm install --save-dev gulp-typescript
> npm install --save-dev gulp-inject
> npm install --save-dev gulp-webserver
> npm install --save-dev Jasmine-core
> npm install --save-dev karma
> npm install --save-dev karma-jasmine
> npm install --save-dev karma-phantomjs-launcher
> npm install --save-dev karma-coverage
> npm install --save-dev gulp-angular-protractor
> npm install --save-dev run-sequence
Nota: ¿Quizá podrías hacerlo todo solo con npm?
Anotaciones
Tipos
ES6
ES5
TypeScript
Used by
Typescriptlang.org
TYPESCRIPT
https://github.com/antonybudianto/angular2-starter/blob/master/tsconfig.json
LINTING
https://github.com/CKGrafico/Angular1.5-Sample-Project/blob/master/scsslint.yml
https://github.com/CKGrafico/Angular1.5-Sample-Project/blob/master/eslint.json
GULPFILE
https://github.com/mgechev/angular2-seed/blob/master/gulpfile.ts
https://github.com/CKGrafico/Cordova-Multiplatform-Template/blob/master/App/gulpfile.js
https://github.com/CKGrafico/Angular1.5-Sample-Project/blob/master/gulpfile.js
KARMA
https://github.com/CKGrafico/Angular1.5-Sample-Project/blob/master/karma.conf.js
• Dependencias
NodeJS (NPM)
• Descarga
Webpack
ts-loader
sass-loader
postcss-loader
autoprefixer
ng2-inline-require
BUNDLE
> npm install webpack -g
> npm install --save-dev ts-loader
> npm install --save-dev sass-loader
> npm install --save-dev postcss-loader
> npm install --save-dev autoprefixer
> npm install --save-dev ng2-inline-require
WEBPACK
https://github.com/adu8419/angular2-webpack/blob/master/config/webpack.dev.js
POLYFILLS
Librerías de JavaScript que nos permiten utilizar
funcionalidades que aún no soporta el
navegador por si mismo.
- html5shiv Añade las características básicas de HTML5
- WebComponents.js Permite utilizar componentes
- prefix-free Dejar de depender de los prefijos
- flexie Para utilizar flexbox
- svg4everybody Permite utilizar todas las catacterísticas de svg
- Muchos más.
RENDIMIENTO
BEM + CONSEJOS
http://blog.ckgrafico.com/tomando-decisiones-estructurar-los-componentes-css/
Module + Block-Element--Modifier Responsive prefixes States
Utilities
JS-Clases
SASS
ANGULAR 2
https://github.com/antonybudianto/angular2-starter
- Framework desarrollo aplicaciones SPA
- Compuesto por módulos
- Basado en componentes
- Creado con TypeScript
- Inyección de dependencias
- One y Two way binding
- Routing, Plantillas, etc.
- Documentación muy completa
MÓDULOS
MÓDULOS
bit.ly/js-modules-board
COMPONENTES
Importación
de módulos
Tag
Plantilla
Estilos
Clase
Dependencias
DIRECTIVAS
Importación
de módulos
Atributo
Inputs y
outputs
Bindings de
propiedades
Listeners
A diferencia de los componentes (que crean su propia vista) estas añaden o modifican un comportamiento en el DOM
INYECTABLES
Importación
de módulos
Servicio
Clase
Inyección
Registro
PIPES
Importación
de módulos
Nombre del
filtro
Interfaz Pipe
Filtro
https://plnkr.co/edit/Oo5NetgdZzs1nxDqleRl
ESTRUCTURA DE ARCHIVOS
https://angular.io/docs/ts/latest/guide/style-guide.html
Carpeta principal
Contenedor de la app
+Componentes propios
+Componentes reutilizables
scss, fonts, etc.
dist, tasks
¿ENTONCES?
PLANTEAR
☐ ¿Duración del proyecto?
☐ ¿Tamaño del equipo?
☐ ¿Complejidad del proyecto?
☐ ¿Reutilización de componentes?
☐ ¿Peticiones desde cliente?
☐ ¿Conocimientos del equipo?
☐ ¿Nivel de calidad esperado?
Lo siento, la respuesta casi siempre
es ‘depende’
Quique Fdez. Guerra
Software Dev. Engineer
Plainconcepts
@CKGrafico
YO SOLO TE PEDÍ UN
PLÁTANO...

Mais conteúdo relacionado

Semelhante a Yo solo te pedí un plátano

Aplicaciones Mobile con AngularJS y Ionic framework
Aplicaciones Mobile con AngularJS y Ionic framework Aplicaciones Mobile con AngularJS y Ionic framework
Aplicaciones Mobile con AngularJS y Ionic framework Marcos Reynoso
 
Aplicaciones mobile con Angular JS y Ionic-framework
Aplicaciones mobile con Angular JS y Ionic-frameworkAplicaciones mobile con Angular JS y Ionic-framework
Aplicaciones mobile con Angular JS y Ionic-frameworkQuasarMaximus
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
comparava lenguajes web
comparava lenguajes webcomparava lenguajes web
comparava lenguajes webjohn_benitez
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webRoberto Sanz Ciriano
 
introduccion java a caracteristicas
introduccion java a caracteristicasintroduccion java a caracteristicas
introduccion java a caracteristicasExpediaTravel
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)Nacho García Fernández
 
Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Carlos Azaustre
 
AngularJS & Front-End Technologies
AngularJS & Front-End Technologies AngularJS & Front-End Technologies
AngularJS & Front-End Technologies Cristián Cortéz
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Pilmee Gates
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapCongresoWeb
 
BarCamp: Tecnologías Java a tu Alcance
BarCamp: Tecnologías Java a tu  AlcanceBarCamp: Tecnologías Java a tu  Alcance
BarCamp: Tecnologías Java a tu Alcancemartosfre
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 

Semelhante a Yo solo te pedí un plátano (20)

Aplicaciones Mobile con AngularJS y Ionic framework
Aplicaciones Mobile con AngularJS y Ionic framework Aplicaciones Mobile con AngularJS y Ionic framework
Aplicaciones Mobile con AngularJS y Ionic framework
 
Aplicaciones mobile con Angular JS y Ionic-framework
Aplicaciones mobile con Angular JS y Ionic-frameworkAplicaciones mobile con Angular JS y Ionic-framework
Aplicaciones mobile con Angular JS y Ionic-framework
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
comparava lenguajes web
comparava lenguajes webcomparava lenguajes web
comparava lenguajes web
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 
introduccion java a caracteristicas
introduccion java a caracteristicasintroduccion java a caracteristicas
introduccion java a caracteristicas
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015
 
AngularJS & Front-End Technologies
AngularJS & Front-End Technologies AngularJS & Front-End Technologies
AngularJS & Front-End Technologies
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta Phonegap
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Pres1
Pres1Pres1
Pres1
 
BarCamp: Tecnologías Java a tu Alcance
BarCamp: Tecnologías Java a tu  AlcanceBarCamp: Tecnologías Java a tu  Alcance
BarCamp: Tecnologías Java a tu Alcance
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Tutorial Java
Tutorial JavaTutorial Java
Tutorial Java
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 

Mais de Quique Fdez Guerra

Frontend 101 Initializing a Frontend Project using React
Frontend 101 Initializing a Frontend Project using ReactFrontend 101 Initializing a Frontend Project using React
Frontend 101 Initializing a Frontend Project using ReactQuique Fdez Guerra
 
YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.
 YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT. YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.
YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.Quique Fdez Guerra
 
Empowering Vue with Typescript, Inversify, Vuex and some other super tools
Empowering Vue with Typescript, Inversify, Vuex and some other super toolsEmpowering Vue with Typescript, Inversify, Vuex and some other super tools
Empowering Vue with Typescript, Inversify, Vuex and some other super toolsQuique Fdez Guerra
 
Real and scalable applications with Nuxt, Vuex and TypeScript
Real and scalable applications with Nuxt, Vuex and TypeScriptReal and scalable applications with Nuxt, Vuex and TypeScript
Real and scalable applications with Nuxt, Vuex and TypeScriptQuique Fdez Guerra
 
Lord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con élLord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con élQuique Fdez Guerra
 
Más productivos con Apache Cordova e Ionic
Más productivos con Apache Cordova e IonicMás productivos con Apache Cordova e Ionic
Más productivos con Apache Cordova e IonicQuique Fdez Guerra
 
Mejora de la atención odontológica para países en desarrollo
Mejora de la atención odontológica para países en desarrolloMejora de la atención odontológica para países en desarrollo
Mejora de la atención odontológica para países en desarrolloQuique Fdez Guerra
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)Quique Fdez Guerra
 
#Win8JSApps | 4.- Métodos de desarrollo
#Win8JSApps | 4.- Métodos de desarrollo#Win8JSApps | 4.- Métodos de desarrollo
#Win8JSApps | 4.- Métodos de desarrolloQuique Fdez Guerra
 
Introduccion a la programacion (Pseudocódigo + JavaScript)
Introduccion a la programacion (Pseudocódigo + JavaScript)Introduccion a la programacion (Pseudocódigo + JavaScript)
Introduccion a la programacion (Pseudocódigo + JavaScript)Quique Fdez Guerra
 
Pasado, presente y Futuro de las aplicaciones en HTML5
Pasado, presente y Futuro de las aplicaciones en HTML5Pasado, presente y Futuro de las aplicaciones en HTML5
Pasado, presente y Futuro de las aplicaciones en HTML5Quique Fdez Guerra
 
Repaso conceptos básicos de JavaScript
Repaso conceptos básicos de JavaScriptRepaso conceptos básicos de JavaScript
Repaso conceptos básicos de JavaScriptQuique Fdez Guerra
 

Mais de Quique Fdez Guerra (20)

Frontend 101 Initializing a Frontend Project using React
Frontend 101 Initializing a Frontend Project using ReactFrontend 101 Initializing a Frontend Project using React
Frontend 101 Initializing a Frontend Project using React
 
YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.
 YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT. YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.
YOU CAN INJECT DEPENDENCIES IN YOUR COMPONENTS, LET'S DO IT.
 
Empowering Vue with Typescript, Inversify, Vuex and some other super tools
Empowering Vue with Typescript, Inversify, Vuex and some other super toolsEmpowering Vue with Typescript, Inversify, Vuex and some other super tools
Empowering Vue with Typescript, Inversify, Vuex and some other super tools
 
Why TypeScript?
Why TypeScript?Why TypeScript?
Why TypeScript?
 
Real and scalable applications with Nuxt, Vuex and TypeScript
Real and scalable applications with Nuxt, Vuex and TypeScriptReal and scalable applications with Nuxt, Vuex and TypeScript
Real and scalable applications with Nuxt, Vuex and TypeScript
 
Lord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con élLord of the codes: Visual Studio y todo lo que puedes hacer con él
Lord of the codes: Visual Studio y todo lo que puedes hacer con él
 
Microsoft Student Partner
Microsoft Student PartnerMicrosoft Student Partner
Microsoft Student Partner
 
Reconnect
ReconnectReconnect
Reconnect
 
Cordova Productivity Tools
Cordova Productivity ToolsCordova Productivity Tools
Cordova Productivity Tools
 
Más productivos con Apache Cordova e Ionic
Más productivos con Apache Cordova e IonicMás productivos con Apache Cordova e Ionic
Más productivos con Apache Cordova e Ionic
 
Los bots son las nuevas apps
Los bots son las nuevas appsLos bots son las nuevas apps
Los bots son las nuevas apps
 
Gitflow Workflow
Gitflow WorkflowGitflow Workflow
Gitflow Workflow
 
Mejora de la atención odontológica para países en desarrollo
Mejora de la atención odontológica para países en desarrolloMejora de la atención odontológica para países en desarrollo
Mejora de la atención odontológica para países en desarrollo
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)
 
Nos vamos de SPA
Nos vamos de SPANos vamos de SPA
Nos vamos de SPA
 
#Win8JSApps | 4.- Métodos de desarrollo
#Win8JSApps | 4.- Métodos de desarrollo#Win8JSApps | 4.- Métodos de desarrollo
#Win8JSApps | 4.- Métodos de desarrollo
 
Introduccion a la programacion (Pseudocódigo + JavaScript)
Introduccion a la programacion (Pseudocódigo + JavaScript)Introduccion a la programacion (Pseudocódigo + JavaScript)
Introduccion a la programacion (Pseudocódigo + JavaScript)
 
Pasado, presente y Futuro de las aplicaciones en HTML5
Pasado, presente y Futuro de las aplicaciones en HTML5Pasado, presente y Futuro de las aplicaciones en HTML5
Pasado, presente y Futuro de las aplicaciones en HTML5
 
Eventos en las páginas
 Eventos en las páginas Eventos en las páginas
Eventos en las páginas
 
Repaso conceptos básicos de JavaScript
Repaso conceptos básicos de JavaScriptRepaso conceptos básicos de JavaScript
Repaso conceptos básicos de JavaScript
 

Yo solo te pedí un plátano