SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Simplificando JavaScript

UPC-FIB Curso 2013-2014
ASW grupo 13

Lucía Monte Soto
Javier Ferrer Gonzalez
Índice
●
●
●
●
●
●
●
●

¿Qué es?
Ejemplo
Flujo de trabajo (“standalone”)
Flujo de trabajo (Symfony2)
Pros/Contras
Vitalidad del proyecto
Conclusiones
Referencias
¿Qué es?
● Capa por encima de JavaScript
○ Lenguaje creado para simplificar JavaScript.
○ El código en CoffeeScript se compila y genera
JavaScript.
○ No penaliza rendimiento (no interpreta en tiempo de
ejecución)
CoffeeScript

Compilador
CoffeeScript

JavaScript
Ejemplo
CoffeeScript (PasteBin):
Ejemplo
JavaScript (PasteBin):
Flujo de trabajo (“standalone”)
Instalación
1. Instalar Homebrew (Mac OS)
○ Entra en conflicto con Macports
○ No se ejecuta como sudo
○ Necesita permisos totales del usuario
actual en /usr/local
2. Instalar Node.js (Mac OS)
○

brew install node

3. Instalar CoffeeScript vía npm
○

npm install -g http://github.com/jashkenas/coffee-script/tarball/master
i.
/usr/local/bin/coffee -> /usr/local/lib/node_modules/coffeescript/bin/coffee
ii.
/usr/local/bin/cake -> /usr/local/lib/node_modules/coffee-script/bin/cake
Flujo de trabajo (“standalone”)
Compilación
A. Única compilación de todo *.coffee dentro de
coffeescripts/ a javascripts/
○

coffee -o javascripts/ -c coffeescripts/

B. Añadir watcher
○

coffee -w -o javascripts/ -c coffeescripts/

C. Unificar varios .coffee en 1 único .js
○

coffee -j javascripts/app.js -c coffeescripts/*.coffee
Flujo de trabajo (Symfony2)
Instalación
1. Añadir a
composer.json
el paquete

2. Modificar config.yml
(gestión assetic)
Flujo de trabajo (Symfony2)
Desarrollo y compilación
3. Inclusión asset en plantilla twig

4. Compilación assetic
php app/console assetic:dump
Pros y contras
● Pros
○ Al compilar se unan patrones JavaScript, haciéndolo
más rápido y usando menos código.
○ Código más legible.

● Contras
○ Los mensajes de compilación poco explícitos.
○ No hay relación directa entre el código CS y el JS
generado al compilar (depuración).
○ Adaptación a un nuevo lenguaje.
○ Migrar código JS existente a CS
Vitalidad del proyecto
● GitHub
○
○
○
○

3499 Commits (último mes: 16 de 11 autores)
2924 Issues cerrados (último mes: 23)
54 Releases
125 Contributors

● Real World™:
○ Posterous
○ Airbnb Mobile
○ Basecamp Mobile
○ https://github.com/jashkenas/coffee-script/wiki/In-TheWild
●

24/12/2009 versión 0.1 (actual: 1.6.3)
Conclusiones
● JavaScript ya no es sólo para listeners de
eventos “tontos” ni efectos webs old school.
● Pre-procesadores ayudan
● Código más simple y legible
● “Nuevo” lenguaje
● Fuerte contra en debug
● Mapeo “débil” frente a AngularJS/Knockout
Referencias
● Web oficial: http://coffeescript.org/
● GitHub: https://github.com/jashkenas/coffee-script
● Migraciones de JS a CS: http://js2coffee.org/
● Libro CoffeeScript: Accelerated JavaScript
Development: http://pragprog.
com/book/tbcoffee/coffeescript

Contenu connexe

Tendances

JavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónJavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónGary Briceño
 
NodeJS
NodeJSNodeJS
NodeJSIBM
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Jose Juan R. Zuñiga
 
Tareas automatizadas y eficientes para la construcción de software con Gradle
Tareas automatizadas y eficientes para la construcción de software con GradleTareas automatizadas y eficientes para la construcción de software con Gradle
Tareas automatizadas y eficientes para la construcción de software con GradleSoftware Guru
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomlaRoberto Segura
 
Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Roberto Segura
 
Lenguaje de programación javascript
Lenguaje de programación javascriptLenguaje de programación javascript
Lenguaje de programación javascriptCesia Garmendez
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceMario IC
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021atSistemas
 
Dockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloDockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloMarco Bellido
 
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
 

Tendances (20)

JavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónJavaScript: Mejorando la programación
JavaScript: Mejorando la programación
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
NodeJS
NodeJSNodeJS
NodeJS
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
 
Tareas automatizadas y eficientes para la construcción de software con Gradle
Tareas automatizadas y eficientes para la construcción de software con GradleTareas automatizadas y eficientes para la construcción de software con Gradle
Tareas automatizadas y eficientes para la construcción de software con Gradle
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
Introducción a WebAssembly
Introducción a WebAssemblyIntroducción a WebAssembly
Introducción a WebAssembly
 
Introducción Nodejs
Introducción NodejsIntroducción Nodejs
Introducción Nodejs
 
Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!
 
Dia1
Dia1Dia1
Dia1
 
Lenguaje de programación javascript
Lenguaje de programación javascriptLenguaje de programación javascript
Lenguaje de programación javascript
 
Dia2
Dia2Dia2
Dia2
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021
 
Creación de Plataformas
Creación de PlataformasCreación de Plataformas
Creación de Plataformas
 
Dockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloDockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrollo
 
Editor Bluefish
Editor BluefishEditor Bluefish
Editor Bluefish
 
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
 

Similaire à Introducción a CoffeeScript

Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3Diego Andrés Alvarez Marín
 
Introducción al ecosistema de React.js
Introducción al ecosistema de React.jsIntroducción al ecosistema de React.js
Introducción al ecosistema de React.jsJoaquín Salvachúa
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
FirebugNext ¿Qué se viene en la nueva versión de Firebug?
FirebugNext ¿Qué se viene en la nueva versión de Firebug?FirebugNext ¿Qué se viene en la nueva versión de Firebug?
FirebugNext ¿Qué se viene en la nueva versión de Firebug?hidekel
 
Zanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionZanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionjuanpi1991
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesMario IC
 
Iniciando c
Iniciando cIniciando c
Iniciando c____
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Ricardo Guerrero Gómez-Olmedo
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidGDGFoz
 

Similaire à Introducción a CoffeeScript (20)

ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
Introducción al ecosistema de React.js
Introducción al ecosistema de React.jsIntroducción al ecosistema de React.js
Introducción al ecosistema de React.js
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript
 
FirebugNext ¿Qué se viene en la nueva versión de Firebug?
FirebugNext ¿Qué se viene en la nueva versión de Firebug?FirebugNext ¿Qué se viene en la nueva versión de Firebug?
FirebugNext ¿Qué se viene en la nueva versión de Firebug?
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Zanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacionZanjai-como-entorno-de-programacion
Zanjai-como-entorno-de-programacion
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Iniciando c
Iniciando cIniciando c
Iniciando c
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y Android
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 

Plus de Javier Ferrer González

We broke up with the monolith, and started dating #eventSourcing - #symfonyCat
We broke up with the monolith, and started dating #eventSourcing - #symfonyCatWe broke up with the monolith, and started dating #eventSourcing - #symfonyCat
We broke up with the monolith, and started dating #eventSourcing - #symfonyCatJavier Ferrer González
 
Redescubre la programación - #MPWAR - #OpenDayLaSalle
Redescubre la programación - #MPWAR - #OpenDayLaSalleRedescubre la programación - #MPWAR - #OpenDayLaSalle
Redescubre la programación - #MPWAR - #OpenDayLaSalleJavier Ferrer González
 
#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de softwareJavier Ferrer González
 
Informática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónInformática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónJavier Ferrer González
 
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...Javier Ferrer González
 

Plus de Javier Ferrer González (8)

We broke up with the monolith, and started dating #eventSourcing - #symfonyCat
We broke up with the monolith, and started dating #eventSourcing - #symfonyCatWe broke up with the monolith, and started dating #eventSourcing - #symfonyCat
We broke up with the monolith, and started dating #eventSourcing - #symfonyCat
 
Redescubre la programación - #MPWAR - #OpenDayLaSalle
Redescubre la programación - #MPWAR - #OpenDayLaSalleRedescubre la programación - #MPWAR - #OpenDayLaSalle
Redescubre la programación - #MPWAR - #OpenDayLaSalle
 
#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software#PhpirstAid - Replanteamiento de diseño de software
#PhpirstAid - Replanteamiento de diseño de software
 
Informática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientaciónInformática en El Mundo Real - Sesión de orientación
Informática en El Mundo Real - Sesión de orientación
 
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
#SpyFiles - Análisis de #FinFisher y los Conflictos Políticos del Malware-as-...
 
Gestión proyecto DroidClic android app
Gestión proyecto DroidClic android appGestión proyecto DroidClic android app
Gestión proyecto DroidClic android app
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
Charla IES Marianao
Charla IES MarianaoCharla IES Marianao
Charla IES Marianao
 

Dernier

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Dernier (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Introducción a CoffeeScript

  • 1. Simplificando JavaScript UPC-FIB Curso 2013-2014 ASW grupo 13 Lucía Monte Soto Javier Ferrer Gonzalez
  • 2. Índice ● ● ● ● ● ● ● ● ¿Qué es? Ejemplo Flujo de trabajo (“standalone”) Flujo de trabajo (Symfony2) Pros/Contras Vitalidad del proyecto Conclusiones Referencias
  • 3. ¿Qué es? ● Capa por encima de JavaScript ○ Lenguaje creado para simplificar JavaScript. ○ El código en CoffeeScript se compila y genera JavaScript. ○ No penaliza rendimiento (no interpreta en tiempo de ejecución) CoffeeScript Compilador CoffeeScript JavaScript
  • 6. Flujo de trabajo (“standalone”) Instalación 1. Instalar Homebrew (Mac OS) ○ Entra en conflicto con Macports ○ No se ejecuta como sudo ○ Necesita permisos totales del usuario actual en /usr/local 2. Instalar Node.js (Mac OS) ○ brew install node 3. Instalar CoffeeScript vía npm ○ npm install -g http://github.com/jashkenas/coffee-script/tarball/master i. /usr/local/bin/coffee -> /usr/local/lib/node_modules/coffeescript/bin/coffee ii. /usr/local/bin/cake -> /usr/local/lib/node_modules/coffee-script/bin/cake
  • 7. Flujo de trabajo (“standalone”) Compilación A. Única compilación de todo *.coffee dentro de coffeescripts/ a javascripts/ ○ coffee -o javascripts/ -c coffeescripts/ B. Añadir watcher ○ coffee -w -o javascripts/ -c coffeescripts/ C. Unificar varios .coffee en 1 único .js ○ coffee -j javascripts/app.js -c coffeescripts/*.coffee
  • 8. Flujo de trabajo (Symfony2) Instalación 1. Añadir a composer.json el paquete 2. Modificar config.yml (gestión assetic)
  • 9. Flujo de trabajo (Symfony2) Desarrollo y compilación 3. Inclusión asset en plantilla twig 4. Compilación assetic php app/console assetic:dump
  • 10. Pros y contras ● Pros ○ Al compilar se unan patrones JavaScript, haciéndolo más rápido y usando menos código. ○ Código más legible. ● Contras ○ Los mensajes de compilación poco explícitos. ○ No hay relación directa entre el código CS y el JS generado al compilar (depuración). ○ Adaptación a un nuevo lenguaje. ○ Migrar código JS existente a CS
  • 11. Vitalidad del proyecto ● GitHub ○ ○ ○ ○ 3499 Commits (último mes: 16 de 11 autores) 2924 Issues cerrados (último mes: 23) 54 Releases 125 Contributors ● Real World™: ○ Posterous ○ Airbnb Mobile ○ Basecamp Mobile ○ https://github.com/jashkenas/coffee-script/wiki/In-TheWild ● 24/12/2009 versión 0.1 (actual: 1.6.3)
  • 12. Conclusiones ● JavaScript ya no es sólo para listeners de eventos “tontos” ni efectos webs old school. ● Pre-procesadores ayudan ● Código más simple y legible ● “Nuevo” lenguaje ● Fuerte contra en debug ● Mapeo “débil” frente a AngularJS/Knockout
  • 13. Referencias ● Web oficial: http://coffeescript.org/ ● GitHub: https://github.com/jashkenas/coffee-script ● Migraciones de JS a CS: http://js2coffee.org/ ● Libro CoffeeScript: Accelerated JavaScript Development: http://pragprog. com/book/tbcoffee/coffeescript