SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Symfony2, interacción con CSS, JS y HTML5 Raúl Fraile Beneyto
¿Quién soy? Raúl Fraile Beneyto Co-fundador del proyecto Facultia Programador PHP/Symfony Symfony2 “Evangelist”
Estructura aplicación web GET /
Estructura aplicación web con SF2 GET /
MVC
Modelo Vista Controlador (MVC) Patrón de arquitectura de software que separa los datos, la presentación y la lógica de negocio. Puede generar HTML, JSON, XML, JS, CSS, imágenes, PDFs... dinámicamente. + Assets
Modelo Vista Controlador (MVC) En la misma aplicación, podemos generar diferentes vistas utilizando los mismos controladores. Por ejemplo: versión web + versión móvil + API
Vistas en Symfony2
Vistas en Symfony2
Vistas en Symfony2 <!DOCTYPE html> <html> <head> <title>Ejemplo</title> </head> <body> Hola  {{ name }} ! </body> </html> hello.html.twig
Vistas en Symfony2 <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <noticias> {% for noticia in noticias %} <noticia> <titulo> {{ noticia.titulo }} </titulo> <fecha> {{ noticia.fecha }} </fecha> </noticia> {% endfor %} </noticias> noticias.xml.twig
Assets en Symfony2
Assets Imágenes, scripts JS y hojas de estilos CSS <img src=&quot; {{ asset('images/logo.png') }} &quot; /> <link href=&quot; {{ asset('css/estilos.css') }} &quot; rel=&quot;stylesheet&quot; /> <script src=&quot; {{ asset('js/scripts.js') }} &quot;></script>
Assetic Gestión de assets + filtros {% javascripts '@TestBundle/Resources/public/js/lib/jquery.js' '@TestBundle/Resources/public/js/*' %} <script src=&quot; {{ asset_url }} &quot;></script> {% endjavascripts %}
Assetic ,[object Object],[object Object],[object Object],[object Object]
 
HTML5  ≈  HTML  +  CSS3  +  JS APIS
HTML 5 Nuevos tags
HTML 5: Tags
HTML 5: Tags <html> <head> </head> <body> <div id=”header”></div> <div id=”content”></div> <div id=”footer”></div> </body> </html>
HTML 5: Tags <html lang=&quot;es&quot;> <head> </head> <body> <header></header> <div id=”content”></div> <footer></footer> </body> </html>
HTML 5: Tags <hgroup> <h1> Noticias de HTML 5 </h1> <h2> Últimas noticias </h2> </hgroup> … <hgroup> <h1> Publicado nuevo draft de HTML5 </h1> <h2> El W3C lo publicó ayer </h2> </hgroup> <hgroup>
HTML 5: Tags <nav> <ul> <li><a href=”/”>Inicio</a></li> <li><a href=”/contacto”>Contacto</a></li> <li><a href=”/productos”>Productos</a></li> <li><a href=”/ayuda”>Ayuda</a></li> </ul> </nav> <nav>
HTML 5: Tags <section id=”noticias”>  <article id=”noticia-1”> .... </article> </section> <aside> <p>Destacados</p> <ul>...</ul> </aside> <section>, <article> y <aside>
HTML 5: Tags <figure> <img src=&quot;estadisticas.jpg&quot; /> <figcaption> Estadísticas de uso </figcaption> </figure> <figure>
HTML 5: Tags <progress value=&quot;50&quot; max=&quot;100&quot;>50%</progress> <progress>
HTML 5: Tags <input list=&quot;componentes&quot;/> <datalist id=&quot;componentes&quot;> <option value=&quot;Twig&quot; /> <option value=&quot;YAML&quot; /> <option value=&quot;Validator&quot;/> <option value=&quot;Console&quot;/> </datalist> <datalist>
HTML 5: Tags <input type=&quot;text&quot;  required placeholder =”Introduce texto” /> <input type=&quot; email &quot; /> | <input type=&quot; url &quot; /> <input type=&quot; date &quot;  min=&quot;2011-11-25&quot; max=&quot;2011-11-26&quot; value=&quot;2011-11-26&quot;  /> <input type=&quot; range &quot;  min=&quot;0&quot; max=&quot;10&quot; value=&quot;5&quot;  /> <input type=&quot;color&quot; /> Nuevos atributos/campos de formulario
HTML 5: Tags Ventajas de disponer de “input type” en móviles: text number email tel
HTML 5: data-* attributes Se pueden definir atributos personalizados para guardar información extra. Muy utilizado en algunos frameworks como jQuery mobile o Twitter Bootstrap JS, para definir comportamientos sin necesidad de escribir nada de JS.
HTML 5: data-* attributes <div id=&quot;persona1&quot; data-id=&quot;1&quot; data-name=&quot;Raul”></div> // jQuery mobile <a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;delete&quot;>Delete</a> // Twitter bootstrap JS <button class=&quot;btn&quot; data-loading-text=&quot;loading stuff...&quot; >...</button>
HTML 5 Almacenamiento offline
HTML 5: Almacenamiento offline Permite almacenar información en el navegador, en forma de datos independientes o en bases de datos (SQLite).
HTML 5: Almacenamiento offline Información básica: // guardar info window. localStorage .setItem('name', 'Raúl Fraile'); // obtener info window. localStorage .getItem('name');
HTML 5: Almacenamiento offline Base de datos var db = window. openDatabase (&quot;facultia&quot;, &quot;1.0&quot;, &quot;description&quot;, 5*1024*1024); db.transaction(function(tx) { tx.executeSql(&quot;SELECT * FROM usuarios&quot;, [], successCallback, errorCallback); });
HTML 5 Comunicación
HTML 5: Web workers/sockets Con los web workers podemos realizar tareas complejas en el navegador sin bloquearlo (hilos). Los web sockets proporcionan un canal bidireccional entre el navegador (cliente) y el servidor. Gran ventaja de los sockets: solamente se envía/recibe la información necesaria, sin cabeceras HTTP, cookies, etc...
HTML 5: Notificaciones Podemos notificar al usuario con ventanas emergentes, que se mostrarán aunque no estemos en la misma pestaña, e incluso, en otro programa. El usuario primero debe dar permisos para poder recibir notificaciones.
HTML 5: Notificaciones // solicitar permisos window. webkitNotifications .requestPermission(); // generar notificación window. webkitNotifications .createNotification('imagen.png', 'título','texto').show();
HTML 5 Ficheros / Hardware
HTML 5: Drag&Drop Proporciona drag&drop nativo (controlado mediante JS), así como drag-in y drag-out en el navegador. Por ejemplo: Gmail permite arrastrar archivos desde el escritorio para adjuntarlos (usando la API de ficheros).
HTML 5: Geolocalización Es posible conocer la posición del usuario sin necesidad de librerías o servicios externos, simplemente con JS. Dependiendo del dispositivo, la información de localización se obtendrá por GPS, IP, puntos WiFi, etc.
HTML 5: Geolocalización navigator. geolocation .getCurrentPosition(function(position) { alert(position.coords.latitude +  position.coords.longitude); }, errorHandler);
HTML 5 Multimedia
HTML 5: Canvas Nuevo tag  <canvas> , que podemos utilizar como lienzo para crear imágenes. Con JS podemos utilizar funciones de alto nivel como  arc  (pintar un arco),  beginPath/closePath  (dibujar formas)...
HTML 5: Canvas var width = 125;  // ancho var height = 105; // alto var padding = 20; context.beginPath(); context.moveTo(padding + width/2, padding); context.lineTo(padding + width, height + padding); context.lineTo(padding, height + padding); context.closePath(); context.fillStyle = &quot;#ffc821&quot;; context.fill();
HTML 5: Audio y vídeo Nuevos tags para reproducir audio y vídeo en el navegador, sin necesidad de reproductores Flash. <audio id=&quot;audio&quot; src=&quot;musica.mp3&quot; controls></audio> // document.getElementById(&quot;audio&quot;).muted = false; <video id=&quot;video&quot; src=&quot;video.mp4&quot; controls></video> // document.getElementById(&quot;video&quot;).play();
HTML 5: SVG SVG (Scalable Vector Graphics) es un formato para definir imágenes vectoriales en XML. Una de las grandes ventajas (además de ser vectorial) es la posibilidad de animarlo, accediendo a sus elementos mediante JS.
HTML 5: WebGL WebGL (Web-based Graphics Library) es una librería que permite mostrar gráficos en 3D, acelerados por hardware, usando simplemente Javascript.
HTML 5 Estado actual
caniuse.com
html5readiness.com
HTML 5: Estado actual Si no lo soportan todos los navegadores...  ¿podemos usarlo? Sí, para mejorar la experiencia del usuario, pero sin olvidarnos del resto
HTML 5: Estado actual Disponemos de herramientas para detectar si el navegador dispone de una u otra característica de HTML 5: Modernizr HTML5 Boilerplate html5 shiv O “simularla”: HTML5 Cross Browser Polyfills <html class=”js flexbox  canvas webgl no-touch  geolocation websqldatabase  history draganddrop  websockets textshadow  opacity csstransitions  fontface video audio  localstorage webworkers  svg inlinesvg”>
¡Gracias! E-mail:  [email_address] Twitter: @raulfraile Github: raulfraile http://www.slideshare.net/raulfraile ¿Preguntas?

Weitere ähnliche Inhalte

Was ist angesagt?

Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php luigiacarigua
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebRightster
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...luigiacarigua
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro TraducidoAprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro Traducidoluigiacarigua
 
Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2luigiacarigua
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)yanburbano
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 

Was ist angesagt? (20)

Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Curso Php
Curso PhpCurso Php
Curso Php
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios Web
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro TraducidoAprendiendo php mysql, javascript, css, html5 LIbro Traducido
Aprendiendo php mysql, javascript, css, html5 LIbro Traducido
 
Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2Aprendiendo php my sql, javascript, css, html5 capitulo 2
Aprendiendo php my sql, javascript, css, html5 capitulo 2
 
Php
PhpPhp
Php
 
Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Iniciacion a PHP (I)
Iniciacion a PHP (I)Iniciacion a PHP (I)
Iniciacion a PHP (I)
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 

Ähnlich wie Symfony2, HTML5 y CSS/JS

Ähnlich wie Symfony2, HTML5 y CSS/JS (20)

Web matrix y j querymobile
Web matrix y j querymobileWeb matrix y j querymobile
Web matrix y j querymobile
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
HTML5 la revolución!
HTML5 la revolución!HTML5 la revolución!
HTML5 la revolución!
 
HTML5 y CSS3
HTML5 y CSS3HTML5 y CSS3
HTML5 y CSS3
 
html
htmlhtml
html
 
HTML5 Enfoque Semantico
HTML5 Enfoque SemanticoHTML5 Enfoque Semantico
HTML5 Enfoque Semantico
 
Guía básica para pegarle al xhtml (Primera parte)
Guía básica para pegarle al xhtml (Primera parte)Guía básica para pegarle al xhtml (Primera parte)
Guía básica para pegarle al xhtml (Primera parte)
 
Blog
BlogBlog
Blog
 
Html5.
Html5.Html5.
Html5.
 
NUEVO!!! EN HTML 5
NUEVO!!! EN HTML 5NUEVO!!! EN HTML 5
NUEVO!!! EN HTML 5
 
Step by step developing with Facebook PHP API by Bruno Kamiche
Step by step developing  with Facebook PHP API by Bruno KamicheStep by step developing  with Facebook PHP API by Bruno Kamiche
Step by step developing with Facebook PHP API by Bruno Kamiche
 
Codigos HTML Continuación
Codigos HTML ContinuaciónCodigos HTML Continuación
Codigos HTML Continuación
 
HTML DINAMICO
HTML DINAMICOHTML DINAMICO
HTML DINAMICO
 
Introducción a ASP.NET
Introducción a ASP.NETIntroducción a ASP.NET
Introducción a ASP.NET
 
Html 5
Html 5Html 5
Html 5
 
Introducción ASP .NET
Introducción ASP .NET Introducción ASP .NET
Introducción ASP .NET
 
Javascript
JavascriptJavascript
Javascript
 
Curso Html
Curso HtmlCurso Html
Curso Html
 
Introducción al desarrollo web
Introducción al desarrollo webIntroducción al desarrollo web
Introducción al desarrollo web
 

Mehr von Raul Fraile

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyRaul Fraile
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPRaul Fraile
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014Raul Fraile
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutesRaul Fraile
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 appsRaul Fraile
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosRaul Fraile
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRaul Fraile
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Raul Fraile
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsRaul Fraile
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]Raul Fraile
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsRaul Fraile
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2Raul Fraile
 

Mehr von Raul Fraile (14)

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con Symfony
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHP
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutes
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidos
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 apps
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 Internals
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internals
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2
 

Kürzlich hochgeladen

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 

Kürzlich hochgeladen (16)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Symfony2, HTML5 y CSS/JS

  • 1. Symfony2, interacción con CSS, JS y HTML5 Raúl Fraile Beneyto
  • 2. ¿Quién soy? Raúl Fraile Beneyto Co-fundador del proyecto Facultia Programador PHP/Symfony Symfony2 “Evangelist”
  • 5. MVC
  • 6. Modelo Vista Controlador (MVC) Patrón de arquitectura de software que separa los datos, la presentación y la lógica de negocio. Puede generar HTML, JSON, XML, JS, CSS, imágenes, PDFs... dinámicamente. + Assets
  • 7. Modelo Vista Controlador (MVC) En la misma aplicación, podemos generar diferentes vistas utilizando los mismos controladores. Por ejemplo: versión web + versión móvil + API
  • 10. Vistas en Symfony2 <!DOCTYPE html> <html> <head> <title>Ejemplo</title> </head> <body> Hola {{ name }} ! </body> </html> hello.html.twig
  • 11. Vistas en Symfony2 <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <noticias> {% for noticia in noticias %} <noticia> <titulo> {{ noticia.titulo }} </titulo> <fecha> {{ noticia.fecha }} </fecha> </noticia> {% endfor %} </noticias> noticias.xml.twig
  • 13. Assets Imágenes, scripts JS y hojas de estilos CSS <img src=&quot; {{ asset('images/logo.png') }} &quot; /> <link href=&quot; {{ asset('css/estilos.css') }} &quot; rel=&quot;stylesheet&quot; /> <script src=&quot; {{ asset('js/scripts.js') }} &quot;></script>
  • 14. Assetic Gestión de assets + filtros {% javascripts '@TestBundle/Resources/public/js/lib/jquery.js' '@TestBundle/Resources/public/js/*' %} <script src=&quot; {{ asset_url }} &quot;></script> {% endjavascripts %}
  • 15.
  • 16.  
  • 17. HTML5 ≈ HTML + CSS3 + JS APIS
  • 20. HTML 5: Tags <html> <head> </head> <body> <div id=”header”></div> <div id=”content”></div> <div id=”footer”></div> </body> </html>
  • 21. HTML 5: Tags <html lang=&quot;es&quot;> <head> </head> <body> <header></header> <div id=”content”></div> <footer></footer> </body> </html>
  • 22. HTML 5: Tags <hgroup> <h1> Noticias de HTML 5 </h1> <h2> Últimas noticias </h2> </hgroup> … <hgroup> <h1> Publicado nuevo draft de HTML5 </h1> <h2> El W3C lo publicó ayer </h2> </hgroup> <hgroup>
  • 23. HTML 5: Tags <nav> <ul> <li><a href=”/”>Inicio</a></li> <li><a href=”/contacto”>Contacto</a></li> <li><a href=”/productos”>Productos</a></li> <li><a href=”/ayuda”>Ayuda</a></li> </ul> </nav> <nav>
  • 24. HTML 5: Tags <section id=”noticias”> <article id=”noticia-1”> .... </article> </section> <aside> <p>Destacados</p> <ul>...</ul> </aside> <section>, <article> y <aside>
  • 25. HTML 5: Tags <figure> <img src=&quot;estadisticas.jpg&quot; /> <figcaption> Estadísticas de uso </figcaption> </figure> <figure>
  • 26. HTML 5: Tags <progress value=&quot;50&quot; max=&quot;100&quot;>50%</progress> <progress>
  • 27. HTML 5: Tags <input list=&quot;componentes&quot;/> <datalist id=&quot;componentes&quot;> <option value=&quot;Twig&quot; /> <option value=&quot;YAML&quot; /> <option value=&quot;Validator&quot;/> <option value=&quot;Console&quot;/> </datalist> <datalist>
  • 28. HTML 5: Tags <input type=&quot;text&quot; required placeholder =”Introduce texto” /> <input type=&quot; email &quot; /> | <input type=&quot; url &quot; /> <input type=&quot; date &quot; min=&quot;2011-11-25&quot; max=&quot;2011-11-26&quot; value=&quot;2011-11-26&quot; /> <input type=&quot; range &quot; min=&quot;0&quot; max=&quot;10&quot; value=&quot;5&quot; /> <input type=&quot;color&quot; /> Nuevos atributos/campos de formulario
  • 29. HTML 5: Tags Ventajas de disponer de “input type” en móviles: text number email tel
  • 30. HTML 5: data-* attributes Se pueden definir atributos personalizados para guardar información extra. Muy utilizado en algunos frameworks como jQuery mobile o Twitter Bootstrap JS, para definir comportamientos sin necesidad de escribir nada de JS.
  • 31. HTML 5: data-* attributes <div id=&quot;persona1&quot; data-id=&quot;1&quot; data-name=&quot;Raul”></div> // jQuery mobile <a href=&quot;index.html&quot; data-role=&quot;button&quot; data-icon=&quot;delete&quot;>Delete</a> // Twitter bootstrap JS <button class=&quot;btn&quot; data-loading-text=&quot;loading stuff...&quot; >...</button>
  • 33. HTML 5: Almacenamiento offline Permite almacenar información en el navegador, en forma de datos independientes o en bases de datos (SQLite).
  • 34. HTML 5: Almacenamiento offline Información básica: // guardar info window. localStorage .setItem('name', 'Raúl Fraile'); // obtener info window. localStorage .getItem('name');
  • 35. HTML 5: Almacenamiento offline Base de datos var db = window. openDatabase (&quot;facultia&quot;, &quot;1.0&quot;, &quot;description&quot;, 5*1024*1024); db.transaction(function(tx) { tx.executeSql(&quot;SELECT * FROM usuarios&quot;, [], successCallback, errorCallback); });
  • 37. HTML 5: Web workers/sockets Con los web workers podemos realizar tareas complejas en el navegador sin bloquearlo (hilos). Los web sockets proporcionan un canal bidireccional entre el navegador (cliente) y el servidor. Gran ventaja de los sockets: solamente se envía/recibe la información necesaria, sin cabeceras HTTP, cookies, etc...
  • 38. HTML 5: Notificaciones Podemos notificar al usuario con ventanas emergentes, que se mostrarán aunque no estemos en la misma pestaña, e incluso, en otro programa. El usuario primero debe dar permisos para poder recibir notificaciones.
  • 39. HTML 5: Notificaciones // solicitar permisos window. webkitNotifications .requestPermission(); // generar notificación window. webkitNotifications .createNotification('imagen.png', 'título','texto').show();
  • 40. HTML 5 Ficheros / Hardware
  • 41. HTML 5: Drag&Drop Proporciona drag&drop nativo (controlado mediante JS), así como drag-in y drag-out en el navegador. Por ejemplo: Gmail permite arrastrar archivos desde el escritorio para adjuntarlos (usando la API de ficheros).
  • 42. HTML 5: Geolocalización Es posible conocer la posición del usuario sin necesidad de librerías o servicios externos, simplemente con JS. Dependiendo del dispositivo, la información de localización se obtendrá por GPS, IP, puntos WiFi, etc.
  • 43. HTML 5: Geolocalización navigator. geolocation .getCurrentPosition(function(position) { alert(position.coords.latitude + position.coords.longitude); }, errorHandler);
  • 45. HTML 5: Canvas Nuevo tag <canvas> , que podemos utilizar como lienzo para crear imágenes. Con JS podemos utilizar funciones de alto nivel como arc (pintar un arco), beginPath/closePath (dibujar formas)...
  • 46. HTML 5: Canvas var width = 125; // ancho var height = 105; // alto var padding = 20; context.beginPath(); context.moveTo(padding + width/2, padding); context.lineTo(padding + width, height + padding); context.lineTo(padding, height + padding); context.closePath(); context.fillStyle = &quot;#ffc821&quot;; context.fill();
  • 47. HTML 5: Audio y vídeo Nuevos tags para reproducir audio y vídeo en el navegador, sin necesidad de reproductores Flash. <audio id=&quot;audio&quot; src=&quot;musica.mp3&quot; controls></audio> // document.getElementById(&quot;audio&quot;).muted = false; <video id=&quot;video&quot; src=&quot;video.mp4&quot; controls></video> // document.getElementById(&quot;video&quot;).play();
  • 48. HTML 5: SVG SVG (Scalable Vector Graphics) es un formato para definir imágenes vectoriales en XML. Una de las grandes ventajas (además de ser vectorial) es la posibilidad de animarlo, accediendo a sus elementos mediante JS.
  • 49. HTML 5: WebGL WebGL (Web-based Graphics Library) es una librería que permite mostrar gráficos en 3D, acelerados por hardware, usando simplemente Javascript.
  • 50. HTML 5 Estado actual
  • 53. HTML 5: Estado actual Si no lo soportan todos los navegadores... ¿podemos usarlo? Sí, para mejorar la experiencia del usuario, pero sin olvidarnos del resto
  • 54. HTML 5: Estado actual Disponemos de herramientas para detectar si el navegador dispone de una u otra característica de HTML 5: Modernizr HTML5 Boilerplate html5 shiv O “simularla”: HTML5 Cross Browser Polyfills <html class=”js flexbox canvas webgl no-touch geolocation websqldatabase history draganddrop websockets textshadow opacity csstransitions fontface video audio localstorage webworkers svg inlinesvg”>
  • 55. ¡Gracias! E-mail: [email_address] Twitter: @raulfraile Github: raulfraile http://www.slideshare.net/raulfraile ¿Preguntas?