SlideShare una empresa de Scribd logo
1 de 13
Uno de los grandes errores
que comete la gente es
tratar de forzar sus intereses.
Tu no eliges tus pasiones, tus
pasiones te eligen a ti.
Jeff Bezos. Presidente y CEO de Amazon
Ejemplo MVC en FRONT (Backbone)
Cambio URL / History API

Router

DOM

VISTAS (renderizado + eventos)

( Manual )

FRONT

MODELOS y COLECCIONES

BACK
RESTFULL API
Phantom js
Phantom js nos permite
obtener “snapshots” de
nuestra web renderizada en
javascript. Es un navegador
sin interfaz, que podemos
ejecutarlo desde backend y
obtener el html para
devolver a los buscadores.
Todo precioso pero en mi caso..
Ya habia una plataforma creada
Toda la lógica estaba en backend, pero nada de
RESTFULL
Importante mantener el SEO
Routers y controladores
Organizo el frontend de la misma forma
Que el backend, en controladores.
Web.com/Users/profile/params

BACKEND
Controller users
→profile

Me aporta:
●
●

Al igual que en un framework en backend
mis controladores en frontend dependen
De la url y son automáticos

HTML

ROUTER

Estandarizar la organización
Automatizar la ejecucion del código js

FRONTEND JS
Controller users
→ profile
“/account/profile”

---->

“/account/media”

Puedo utilizar la HISTORY API para cambiar la url de forma
asíncrona.
Como mi ROUTER JS esta escuchando los cambios de la url
automaticamente se ejecutara el controlador de
“/account/media” en frontend

ROUTER

Si cambia la url o
accedes por primera ver
a la web..

BACKEND

Controller account
→ media
Si ha cambiado la url
asíncronamente...

Pido el parcial y lo
monto
Desde el backend
No tengo que cambiar mi estructura de url, tan solo
tengo que hacer una comprobación cuando recibo una
petición:
{
data:
{
Html: ”<b>Hola</b>”
},
Status:1

Account/profile

ES AJAX?
NO

HTML
Renderizado con layout HTML

SI

}
Como devuelvo el html
Dentro de un json puedo
Enviar mas datos, no solo
La renderización de la pantalla

JSON + VISTA PARCIAL HTML
Ajax y automatización de tareas:
Automatizo cosas como mostrar los errores de
los formularios, Sacar popups de alerta,
popups de validaciones gracias a una capa
intermedia
Controller_usuarios
→ pefil
Peticion
ajax

FRONT

DOM
JSON

$.post || $.get || $.ajax

Tareas
automáticas

JSON

BACK

AJAX LIBRARY

Controller_usuarios
→ perfil

PHP

{data: {
Html: ””,
Form_errors: {},
Popup_msj: {}
},
Status:1}
Reutilización y dependencia del dom
Asigno automaticamente los eventos la dom con la propiedad
doAction, pero Sin abusar = )

<div class=”button” doAction=”account_follow_user”>
Ejecuta

Controller_account → _action_follow_user()
En ocasiones es mejor asignarlos de la forma tradicional,
pero bien usado permite separar aun más la logica de los
eventos y hacerlos extremadamente faciles de reutilizar
Resumiendo
¿Que tengo que modificar en el
backend?
Si es ajax devuelve la vista parcial dentro de un json,
si no es ajax lo tienes hecho!
Puedes crearte una librería que te genere el json si
quieres automatizar tareas desde frontend.
Resumiendo
¿Como organizo el frontend?
Automatiza tus ruters con respecto a las urls usando una
librería como history.js y olvidate de hacerlo a mano
Comprueba si la url se ha cambiado asincronamente y
pide los parciales que te hagan falta
No tienes que preocuparte de renderizar vistas ni
controlar datos de modelos.
Crea una capa intermedia que escuche lo que devuelve tu
backend para automatizar tareas extendiendo $.get
$.post y $.ajax
A tener en cuenta
Las peticiones al servidor son mas pesadas porque
contienen todo el html renderizado, por tanto mas
lentas.

En parte se conpensa con que como desde front no
hay que renderizar ni tratar con modelos el cliente
necesitara procesar menos código javascript y la
ejecución sera más rápida
linkedin.com/in/ivangvillar
@ivangvillar
ivangvillar@gmail.com

Hazme un review en:

Pickevent.com/IvanGV

Más contenido relacionado

La actualidad más candente

PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
Pablo Campos
 
18 19 aplicaciones web modernas con javascript
18 19 aplicaciones web modernas con javascript18 19 aplicaciones web modernas con javascript
18 19 aplicaciones web modernas con javascript
Software Guru
 
10 Joomla. Alojamiento Web Gratuito
10 Joomla. Alojamiento Web Gratuito10 Joomla. Alojamiento Web Gratuito
10 Joomla. Alojamiento Web Gratuito
José M. Padilla
 
Introducciòn a AngularJS
Introducciòn a AngularJSIntroducciòn a AngularJS
Introducciòn a AngularJS
René Olivo
 

La actualidad más candente (19)

Manual de instalación wampserver
Manual de instalación wampserverManual de instalación wampserver
Manual de instalación wampserver
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Blog
BlogBlog
Blog
 
Blog
BlogBlog
Blog
 
AngularJS
AngularJSAngularJS
AngularJS
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
 
Eliminar registros de la base de datos desde página web dinámica.
Eliminar registros de la base de datos desde página web dinámica.Eliminar registros de la base de datos desde página web dinámica.
Eliminar registros de la base de datos desde página web dinámica.
 
Directivas
DirectivasDirectivas
Directivas
 
Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)
 
18 19 aplicaciones web modernas con javascript
18 19 aplicaciones web modernas con javascript18 19 aplicaciones web modernas con javascript
18 19 aplicaciones web modernas con javascript
 
Aplicaciones Web Modernas con Javascript
Aplicaciones Web Modernas con Javascript Aplicaciones Web Modernas con Javascript
Aplicaciones Web Modernas con Javascript
 
Ajax
AjaxAjax
Ajax
 
Precios de hosting
Precios de hostingPrecios de hosting
Precios de hosting
 
10 Joomla. Alojamiento Web Gratuito
10 Joomla. Alojamiento Web Gratuito10 Joomla. Alojamiento Web Gratuito
10 Joomla. Alojamiento Web Gratuito
 
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES.
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES.FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES.
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES.
 
myprofly
myproflymyprofly
myprofly
 
Introducciòn a AngularJS
Introducciòn a AngularJSIntroducciòn a AngularJS
Introducciòn a AngularJS
 
Objetos Implícitos en JSP.
Objetos Implícitos en JSP.Objetos Implícitos en JSP.
Objetos Implícitos en JSP.
 

Destacado (10)

Json short manual
Json short manualJson short manual
Json short manual
 
SEO para aplicaciones javascript
SEO para aplicaciones javascriptSEO para aplicaciones javascript
SEO para aplicaciones javascript
 
Accesorios para Celulares WiMo
Accesorios para Celulares WiMoAccesorios para Celulares WiMo
Accesorios para Celulares WiMo
 
JSON
JSONJSON
JSON
 
Json
JsonJson
Json
 
Json
JsonJson
Json
 
Json
JsonJson
Json
 
Xml json yaml
Xml json yamlXml json yaml
Xml json yaml
 
JSON Support en SQL Server 2016
JSON Support en SQL Server 2016JSON Support en SQL Server 2016
JSON Support en SQL Server 2016
 
Conexion a servidor desde android
Conexion a servidor desde androidConexion a servidor desde android
Conexion a servidor desde android
 

Similar a Mudate a ajax sin morir en el intento.

Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
cok12v
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integrado
bruchsytem
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
Steven Gomez
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
goreorti
 

Similar a Mudate a ajax sin morir en el intento. (20)

Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Ajax
AjaxAjax
Ajax
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
expo
expoexpo
expo
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integrado
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
T10_Ejercicios_Solucion.pdf
T10_Ejercicios_Solucion.pdfT10_Ejercicios_Solucion.pdf
T10_Ejercicios_Solucion.pdf
 
Introduccion mvc
Introduccion mvcIntroduccion mvc
Introduccion mvc
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Curso ajax
Curso ajaxCurso ajax
Curso ajax
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
J query
J queryJ query
J query
 
Diseño web
Diseño webDiseño web
Diseño web
 
Diseño web
Diseño webDiseño web
Diseño web
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Javascript y Jquery.pptx
Javascript y Jquery.pptxJavascript y Jquery.pptx
Javascript y Jquery.pptx
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
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...
 
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
 
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.
 
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
 
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
 
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
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Mudate a ajax sin morir en el intento.

  • 1. Uno de los grandes errores que comete la gente es tratar de forzar sus intereses. Tu no eliges tus pasiones, tus pasiones te eligen a ti. Jeff Bezos. Presidente y CEO de Amazon
  • 2. Ejemplo MVC en FRONT (Backbone) Cambio URL / History API Router DOM VISTAS (renderizado + eventos) ( Manual ) FRONT MODELOS y COLECCIONES BACK RESTFULL API
  • 3. Phantom js Phantom js nos permite obtener “snapshots” de nuestra web renderizada en javascript. Es un navegador sin interfaz, que podemos ejecutarlo desde backend y obtener el html para devolver a los buscadores.
  • 4. Todo precioso pero en mi caso.. Ya habia una plataforma creada Toda la lógica estaba en backend, pero nada de RESTFULL Importante mantener el SEO
  • 5. Routers y controladores Organizo el frontend de la misma forma Que el backend, en controladores. Web.com/Users/profile/params BACKEND Controller users →profile Me aporta: ● ● Al igual que en un framework en backend mis controladores en frontend dependen De la url y son automáticos HTML ROUTER Estandarizar la organización Automatizar la ejecucion del código js FRONTEND JS Controller users → profile
  • 6. “/account/profile” ----> “/account/media” Puedo utilizar la HISTORY API para cambiar la url de forma asíncrona. Como mi ROUTER JS esta escuchando los cambios de la url automaticamente se ejecutara el controlador de “/account/media” en frontend ROUTER Si cambia la url o accedes por primera ver a la web.. BACKEND Controller account → media Si ha cambiado la url asíncronamente... Pido el parcial y lo monto
  • 7. Desde el backend No tengo que cambiar mi estructura de url, tan solo tengo que hacer una comprobación cuando recibo una petición: { data: { Html: ”<b>Hola</b>” }, Status:1 Account/profile ES AJAX? NO HTML Renderizado con layout HTML SI } Como devuelvo el html Dentro de un json puedo Enviar mas datos, no solo La renderización de la pantalla JSON + VISTA PARCIAL HTML
  • 8. Ajax y automatización de tareas: Automatizo cosas como mostrar los errores de los formularios, Sacar popups de alerta, popups de validaciones gracias a una capa intermedia Controller_usuarios → pefil Peticion ajax FRONT DOM JSON $.post || $.get || $.ajax Tareas automáticas JSON BACK AJAX LIBRARY Controller_usuarios → perfil PHP {data: { Html: ””, Form_errors: {}, Popup_msj: {} }, Status:1}
  • 9. Reutilización y dependencia del dom Asigno automaticamente los eventos la dom con la propiedad doAction, pero Sin abusar = ) <div class=”button” doAction=”account_follow_user”> Ejecuta Controller_account → _action_follow_user() En ocasiones es mejor asignarlos de la forma tradicional, pero bien usado permite separar aun más la logica de los eventos y hacerlos extremadamente faciles de reutilizar
  • 10. Resumiendo ¿Que tengo que modificar en el backend? Si es ajax devuelve la vista parcial dentro de un json, si no es ajax lo tienes hecho! Puedes crearte una librería que te genere el json si quieres automatizar tareas desde frontend.
  • 11. Resumiendo ¿Como organizo el frontend? Automatiza tus ruters con respecto a las urls usando una librería como history.js y olvidate de hacerlo a mano Comprueba si la url se ha cambiado asincronamente y pide los parciales que te hagan falta No tienes que preocuparte de renderizar vistas ni controlar datos de modelos. Crea una capa intermedia que escuche lo que devuelve tu backend para automatizar tareas extendiendo $.get $.post y $.ajax
  • 12. A tener en cuenta Las peticiones al servidor son mas pesadas porque contienen todo el html renderizado, por tanto mas lentas. En parte se conpensa con que como desde front no hay que renderizar ni tratar con modelos el cliente necesitara procesar menos código javascript y la ejecución sera más rápida