SlideShare una empresa de Scribd logo
Curso de Desarrollo Web
Curso de Desarrollo Web
Aprende Online a crear tu propia web
Febrero 2015
@carlosazaustre
+CarlosAzaustre
Curso de Desarrollo Web
Carlos Azaustre
Web Developer, JavaScript Lover
Ingeniero en Telemática.
Estudiante de Platzi.
CTO & CoFounder en Chefly.
Co-Organizador en Hackathon Lovers.
Co-Organizador en Nodeschool Madrid.
Curso de Desarrollo Web
Desarrollo Web Moderno
www
Aplicación Cliente
Curso de Desarrollo Web
Desarrollo Web Moderno
www
Aplicación Cliente
Curso de Desarrollo Web
Desarrollo Web Moderno
www
Aplicación Cliente Servidor
Curso de Desarrollo Web
Desarrollo Web Moderno
www
Aplicación Cliente Servidor Base de Datos
Curso de Desarrollo Web
Desarrollo Web Moderno
www
Aplicación Cliente Servidor Base de Datos
Curso de Desarrollo Web
HTML5 CSS3 JavaScript
Curso de Desarrollo Web
API REST
[{
“nombre”: “Desarrollo Web”,
“nivel”: “basico”,
“url”: “platzi.com/online”
},
{
“nombre”: “Frontend Profesional”,
“nivel”: “intermedio”,
“url”: “platzi.com/frontend”
},
{
“nombre”: “JavaScript y Node.js”,
“nivel”: “avanzado”,
“url”: “platzi.com/js”
},
...]
GET /cursos
JSON
JavaScript
Object
Notation
Curso de Desarrollo Web
API REST
Método ¿Qué hace?
GET Devuelve un recurso o una lista de recursos
POST Registra un nuevo recurso
PUT Actualiza un recurso existente
DELETE Elimina un recurso existente
Curso de Desarrollo Web
API REST
Código Significado
200 Todo fue OK
300 El contenido está en otro sitio y será redirigido
400 Acceso prohibido o el recurso no existe
403 Acceso prohibido o restringido
404 El recurso no existe
500 Error interno del servidor
Curso de Desarrollo Web
JSONP vs CORS
Same-Origin Policy
Solo se puede acceder al DOM si el script está en el mismo origen (esquema,
hostname, puerto)
Refused to connect to ‘http://api.com/recurso’
because it violates the following Content
Security Policy directive
Curso de Desarrollo Web
JSONP vs CORS
Same-Origin Policy
Solo se puede acceder al DOM si el script está en el mismo origen (esquema,
hostname, puerto)
JSONP
JSON con Padding.
● Muchas APIs públicas funcionan
con JSONP, necesita una función
de callback en la llamada al API
● ej: http://api.com/recursos/?
callback=miFuncionDeCallback
● Solo permite el método GET de
HTTP
CORS
Cross-Origin Resource Sharing
● Permite más metodos de HTTP
(GET, POST, PUT, DELETE)
● Ha de configurarse en el servidor.
Podemos elegir a quién dar
acceso
Curso de Desarrollo Web
DOM
Document Object Model
<html>
Curso de Desarrollo Web
DOM
Document Object Model
<html>
<head> <body>
Curso de Desarrollo Web
DOM
Document Object Model
<html>
<head> <body>
<header><title> <link> <section>
Curso de Desarrollo Web
DOM
Document Object Model
<html>
<head> <body>
<header>
<h1> <p> <span>
<title> <link> <section>
Curso de Desarrollo Web
BOM
Browser Object Model
window
document
navigator
history
location
. . .
anchors
forms
images
links
. . .
Curso de Desarrollo Web
jQuery
librería JS para ayudarnos
en el DOM y AJAX
Curso de Desarrollo Web
Comparación JS <-> jQuery
document.getElementById(“myDiv”); $(“#myDiv”);
function clickHandler() { … }
var anchor = document.getElementById
(“anchorID”);
if(anchor.addEventListener) {
anchor.addEventListener(“click”,
clickHandler, true);
}
else if(anchor.attachEvent) {
anchor.attachEvent(“onclick”,
function() {
return clickHandler.apply(
anchor,
[window.event]
);
});
}
function clickHandler() { … }
$(“#anchorID”).on(“click”, clickHandler);
Curso de Desarrollo Web
Petición AJAX en JS
var xhr;
// IE7+, Firefox, Chrome, Opera, Safari
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
// IE6, IE5
else {
xhr = new ActiveXObject(“Microsoft.XMLHTTP”);
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
document.getElementById(“myDiv”).innerHTML = xhr.responseText;
}
xhr.open(“GET”, “http://example.com/recurso”, true);
xhr.send();
}
Curso de Desarrollo Web
Petición AJAX en JS
var xhr;
// IE7+, Firefox, Chrome, Opera, Safari
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
// IE6, IE5
else {
xhr = new ActiveXObject(“Microsoft.XMLHTTP”);
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
document.getElementById(“myDiv”).innerHTML = xhr.responseText;
}
xhr.open(“GET”, “http://example.com/recurso”, true);
xhr.send();
}
Curso de Desarrollo Web
Petición AJAX con jQuery
$.ajax({
type: “GET”,
url: “http://example.com/recurso”,
context: document.body
}).done(function(data) {
$(“#myDiv”).html(data);
});
$.getJSON({“http://example.com/recurso”,
function(data) {
$(“#myDiv”).html(data);
});
o también
Curso de Desarrollo Web
Petición AJAX con jQuery
$.ajax({
type: “GET”,
url: “http://example.com/recurso”,
context: document.body
}).done(function(data) {
$(“#myDiv”).html(data);
});
$.getJSON({“http://example.com/recurso”,
function(data) {
$(“#myDiv”).html(data);
});
o también
Curso de Desarrollo Web
HTML5
Elementos Cool
● LocalStorage
● GeoLocation
● Template
● ...
Curso de Desarrollo Web
Uso de geoLocation
navigator
.geolocation
.getCurrentPosition(getCoords, errorFound);
function errorFound(err) {
alert(“Ocurrió un error: “ +err);
}
function getCoords(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
alert(“Tu posición es: “ + lat + “;” + lon);
}
Curso de Desarrollo Web
Uso de <template>
<template id=”myTemplate”>
<h1></h1>
<p></p>
</template>
HTML
Curso de Desarrollo Web
Uso de <template>
<template id=”myTemplate”>
<h1></h1>
<p></p>
</template>
HTML
var t = document.querySelector(“myTemplate”);
var clone = document.importNode(t.content, true);
clone.querySelector(“h1”).innerHTML = “Platzi”
clone.querySelector(“p”).innerHTML = “Aprende a crear
el futuro de internet”;
document.body.appendChild(clone);
JS
Curso de Desarrollo Web
Uso de <template>
<template id=”myTemplate”>
<h1></h1>
<p></p>
</template>
HTML
var t = document.querySelector(“myTemplate”);
var clone = document.importNode(t.content, true);
clone.querySelector(“h1”).innerHTML = “Platzi”
clone.querySelector(“p”).innerHTML = “Aprende a crear
el futuro de internet”;
document.body.appendChild(clone);
JS
Resultado HTML
<h1>Platzi</h1>
<p>Aprende a crear el
futuro de internet</p>
Curso de Desarrollo Web
Uso de LocalStorage
var elemento = “hola mundo”;
localStorage.setItem(“clave”, elemento);
console.log(localStorage.getItem(“clave”));
// hola mundo
Curso de Desarrollo Web
Uso de LocalStorage
var obj = {
“titulo”: “desarrollo web”,
“nivel”: “básico”,
“plataforma”: “Platzi”
};
var objString = JSON.stringify(obj);
localStorage[‘curso’] = objString;
var elem = localStorage.curso;
var elemParsed = JSON.parse(elem);
console.log(elemParsed);
//
{“titulo”: “desarrollo web”,
“nivel”: “básico”,
“plataforma”: “Platzi”}

Más contenido relacionado

La actualidad más candente

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
Carlos Azaustre
 
Por qué AngularJS
Por qué AngularJSPor qué AngularJS
Por qué AngularJS
Alvaro Yuste Torregrosa
 
Despegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSDespegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSFacundo Viale
 
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
 
Taller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaTaller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfecta
OpenExpoES
 
Angular js
Angular jsAngular js
Angular js
Joan Pablo
 
Curso de Responsive Design
Curso de Responsive DesignCurso de Responsive Design
Curso de Responsive Design
Carlos Azaustre
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
César Jefferson Aquino Maximiliano
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJS
Oscar Gensollen
 
Angular js
Angular jsAngular js
Angular js
Gabriel Chertok
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders Valencia
Javier Ruiz
 
Angular.js
Angular.jsAngular.js
Angular.js
GDG Cali
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
Luis Natividad
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
Visual Engineering
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
Antonio Kobashikawa Carrasco
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
Mario Alberto Chavez
 
Hola RoR
Hola RoRHola RoR

La actualidad más candente (20)

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
 
Por qué AngularJS
Por qué AngularJSPor qué AngularJS
Por qué AngularJS
 
Despegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSDespegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJS
 
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)
 
Taller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaTaller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfecta
 
Angular js
Angular jsAngular js
Angular js
 
Curso de Responsive Design
Curso de Responsive DesignCurso de Responsive Design
Curso de Responsive Design
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJS
 
Angularjs
AngularjsAngularjs
Angularjs
 
Angular js
Angular jsAngular js
Angular js
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders Valencia
 
Angular js in mobile
Angular js in mobileAngular js in mobile
Angular js in mobile
 
Angular.js
Angular.jsAngular.js
Angular.js
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
Hola RoR
Hola RoRHola RoR
Hola RoR
 

Destacado

#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript
Carlos Azaustre
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCC
Carlos Azaustre
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
Platzi
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
Platzi
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017
Carlos Azaustre
 
Netquest Survey Manager - Software de encuestas online
Netquest Survey Manager - Software de encuestas online Netquest Survey Manager - Software de encuestas online
Netquest Survey Manager - Software de encuestas online
Netquest
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
Iván Campaña Naranjo
 
Diploma Backend Developer
Diploma Backend DeveloperDiploma Backend Developer
Diploma Backend Developer
Alejandro Steinmetz
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia Murialdo
GeneXus
 
Diploma google-fullstack
Diploma google-fullstackDiploma google-fullstack
Diploma google-fullstack
Alejandro Steinmetz
 
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
GeneXus
 
Diploma programacion-android
Diploma programacion-androidDiploma programacion-android
Diploma programacion-android
Alejandro Steinmetz
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexusGeneXus
 
El software libre como una buena oportunidad para las grandes empresas- OpenE...
El software libre como una buena oportunidad para las grandes empresas- OpenE...El software libre como una buena oportunidad para las grandes empresas- OpenE...
El software libre como una buena oportunidad para las grandes empresas- OpenE...
OpenExpoES
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
GeneXus
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
GeneXus
 
Swift Programming Basics (Part I)
Swift Programming Basics (Part I)Swift Programming Basics (Part I)
Swift Programming Basics (Part I)
Alberto Pacheco
 
Encuesta ''escuchas la radio?''
Encuesta ''escuchas la radio?''Encuesta ''escuchas la radio?''
Encuesta ''escuchas la radio?''Melissa Garcia
 
Tutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación SwiftTutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación Swift
Luis Ernesto Castillo Alfaro
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus
 

Destacado (20)

#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCC
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017
 
Netquest Survey Manager - Software de encuestas online
Netquest Survey Manager - Software de encuestas online Netquest Survey Manager - Software de encuestas online
Netquest Survey Manager - Software de encuestas online
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
Diploma Backend Developer
Diploma Backend DeveloperDiploma Backend Developer
Diploma Backend Developer
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia Murialdo
 
Diploma google-fullstack
Diploma google-fullstackDiploma google-fullstack
Diploma google-fullstack
 
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
 
Diploma programacion-android
Diploma programacion-androidDiploma programacion-android
Diploma programacion-android
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexus
 
El software libre como una buena oportunidad para las grandes empresas- OpenE...
El software libre como una buena oportunidad para las grandes empresas- OpenE...El software libre como una buena oportunidad para las grandes empresas- OpenE...
El software libre como una buena oportunidad para las grandes empresas- OpenE...
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
 
Swift Programming Basics (Part I)
Swift Programming Basics (Part I)Swift Programming Basics (Part I)
Swift Programming Basics (Part I)
 
Encuesta ''escuchas la radio?''
Encuesta ''escuchas la radio?''Encuesta ''escuchas la radio?''
Encuesta ''escuchas la radio?''
 
Tutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación SwiftTutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación Swift
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel Simonet
 

Similar a Curso de Desarrollo Web de Platzi

introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
Yair Ambrocio
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
guestd24c393
 
Ajax
AjaxAjax
Ajax
ousli07
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
guest976d083
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
BEEVA_es
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
CARLOS III UNIVERSITY OF MADRID
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
Mitusin
 
Seminario jquery, html5 y wicket
Seminario jquery, html5 y wicketSeminario jquery, html5 y wicket
Seminario jquery, html5 y wicketAdrià Solé Orrit
 
Web20
Web20Web20
Web20UJAP
 
Ajax
AjaxAjax
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
Danae Aguilar Guzmán
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web DevelopmentJaime Irurzun
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
Continuum
 
HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
Iran Reyes Fleitas
 

Similar a Curso de Desarrollo Web de Platzi (20)

introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Ajax
AjaxAjax
Ajax
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Seminario jquery, html5 y wicket
Seminario jquery, html5 y wicketSeminario jquery, html5 y wicket
Seminario jquery, html5 y wicket
 
Web20
Web20Web20
Web20
 
myprofly
myproflymyprofly
myprofly
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Ajax
AjaxAjax
Ajax
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
J query
J queryJ query
J query
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
 

Más de Carlos Azaustre

Introducción al JAMStack - JS Ourense
Introducción al JAMStack - JS OurenseIntroducción al JAMStack - JS Ourense
Introducción al JAMStack - JS Ourense
Carlos Azaustre
 
Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos
Carlos Azaustre
 
Your First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + FirebaseYour First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + Firebase
Carlos Azaustre
 
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIsPixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
Carlos Azaustre
 
Prototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGiversPrototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGivers
Carlos Azaustre
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
Carlos Azaustre
 
Taller de Seo y Facebook Ads
Taller de Seo y Facebook AdsTaller de Seo y Facebook Ads
Taller de Seo y Facebook Ads
Carlos Azaustre
 
Chefly Keynote at ETSII
Chefly Keynote at ETSIIChefly Keynote at ETSII
Chefly Keynote at ETSII
Carlos Azaustre
 
Chefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup SchoolChefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup School
Carlos Azaustre
 
Nuestra experiencia emprendedora
Nuestra experiencia emprendedoraNuestra experiencia emprendedora
Nuestra experiencia emprendedora
Carlos Azaustre
 

Más de Carlos Azaustre (10)

Introducción al JAMStack - JS Ourense
Introducción al JAMStack - JS OurenseIntroducción al JAMStack - JS Ourense
Introducción al JAMStack - JS Ourense
 
Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos
 
Your First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + FirebaseYour First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + Firebase
 
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIsPixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
 
Prototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGiversPrototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGivers
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Taller de Seo y Facebook Ads
Taller de Seo y Facebook AdsTaller de Seo y Facebook Ads
Taller de Seo y Facebook Ads
 
Chefly Keynote at ETSII
Chefly Keynote at ETSIIChefly Keynote at ETSII
Chefly Keynote at ETSII
 
Chefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup SchoolChefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup School
 
Nuestra experiencia emprendedora
Nuestra experiencia emprendedoraNuestra experiencia emprendedora
Nuestra experiencia emprendedora
 

Último

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 

Último (6)

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 

Curso de Desarrollo Web de Platzi

  • 1. Curso de Desarrollo Web Curso de Desarrollo Web Aprende Online a crear tu propia web Febrero 2015 @carlosazaustre +CarlosAzaustre
  • 2. Curso de Desarrollo Web Carlos Azaustre Web Developer, JavaScript Lover Ingeniero en Telemática. Estudiante de Platzi. CTO & CoFounder en Chefly. Co-Organizador en Hackathon Lovers. Co-Organizador en Nodeschool Madrid.
  • 3. Curso de Desarrollo Web Desarrollo Web Moderno www Aplicación Cliente
  • 4. Curso de Desarrollo Web Desarrollo Web Moderno www Aplicación Cliente
  • 5. Curso de Desarrollo Web Desarrollo Web Moderno www Aplicación Cliente Servidor
  • 6. Curso de Desarrollo Web Desarrollo Web Moderno www Aplicación Cliente Servidor Base de Datos
  • 7. Curso de Desarrollo Web Desarrollo Web Moderno www Aplicación Cliente Servidor Base de Datos
  • 8. Curso de Desarrollo Web HTML5 CSS3 JavaScript
  • 9. Curso de Desarrollo Web API REST [{ “nombre”: “Desarrollo Web”, “nivel”: “basico”, “url”: “platzi.com/online” }, { “nombre”: “Frontend Profesional”, “nivel”: “intermedio”, “url”: “platzi.com/frontend” }, { “nombre”: “JavaScript y Node.js”, “nivel”: “avanzado”, “url”: “platzi.com/js” }, ...] GET /cursos JSON JavaScript Object Notation
  • 10. Curso de Desarrollo Web API REST Método ¿Qué hace? GET Devuelve un recurso o una lista de recursos POST Registra un nuevo recurso PUT Actualiza un recurso existente DELETE Elimina un recurso existente
  • 11. Curso de Desarrollo Web API REST Código Significado 200 Todo fue OK 300 El contenido está en otro sitio y será redirigido 400 Acceso prohibido o el recurso no existe 403 Acceso prohibido o restringido 404 El recurso no existe 500 Error interno del servidor
  • 12. Curso de Desarrollo Web JSONP vs CORS Same-Origin Policy Solo se puede acceder al DOM si el script está en el mismo origen (esquema, hostname, puerto) Refused to connect to ‘http://api.com/recurso’ because it violates the following Content Security Policy directive
  • 13. Curso de Desarrollo Web JSONP vs CORS Same-Origin Policy Solo se puede acceder al DOM si el script está en el mismo origen (esquema, hostname, puerto) JSONP JSON con Padding. ● Muchas APIs públicas funcionan con JSONP, necesita una función de callback en la llamada al API ● ej: http://api.com/recursos/? callback=miFuncionDeCallback ● Solo permite el método GET de HTTP CORS Cross-Origin Resource Sharing ● Permite más metodos de HTTP (GET, POST, PUT, DELETE) ● Ha de configurarse en el servidor. Podemos elegir a quién dar acceso
  • 14. Curso de Desarrollo Web DOM Document Object Model <html>
  • 15. Curso de Desarrollo Web DOM Document Object Model <html> <head> <body>
  • 16. Curso de Desarrollo Web DOM Document Object Model <html> <head> <body> <header><title> <link> <section>
  • 17. Curso de Desarrollo Web DOM Document Object Model <html> <head> <body> <header> <h1> <p> <span> <title> <link> <section>
  • 18. Curso de Desarrollo Web BOM Browser Object Model window document navigator history location . . . anchors forms images links . . .
  • 19. Curso de Desarrollo Web jQuery librería JS para ayudarnos en el DOM y AJAX
  • 20. Curso de Desarrollo Web Comparación JS <-> jQuery document.getElementById(“myDiv”); $(“#myDiv”); function clickHandler() { … } var anchor = document.getElementById (“anchorID”); if(anchor.addEventListener) { anchor.addEventListener(“click”, clickHandler, true); } else if(anchor.attachEvent) { anchor.attachEvent(“onclick”, function() { return clickHandler.apply( anchor, [window.event] ); }); } function clickHandler() { … } $(“#anchorID”).on(“click”, clickHandler);
  • 21. Curso de Desarrollo Web Petición AJAX en JS var xhr; // IE7+, Firefox, Chrome, Opera, Safari if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } // IE6, IE5 else { xhr = new ActiveXObject(“Microsoft.XMLHTTP”); } xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById(“myDiv”).innerHTML = xhr.responseText; } xhr.open(“GET”, “http://example.com/recurso”, true); xhr.send(); }
  • 22. Curso de Desarrollo Web Petición AJAX en JS var xhr; // IE7+, Firefox, Chrome, Opera, Safari if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } // IE6, IE5 else { xhr = new ActiveXObject(“Microsoft.XMLHTTP”); } xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById(“myDiv”).innerHTML = xhr.responseText; } xhr.open(“GET”, “http://example.com/recurso”, true); xhr.send(); }
  • 23. Curso de Desarrollo Web Petición AJAX con jQuery $.ajax({ type: “GET”, url: “http://example.com/recurso”, context: document.body }).done(function(data) { $(“#myDiv”).html(data); }); $.getJSON({“http://example.com/recurso”, function(data) { $(“#myDiv”).html(data); }); o también
  • 24. Curso de Desarrollo Web Petición AJAX con jQuery $.ajax({ type: “GET”, url: “http://example.com/recurso”, context: document.body }).done(function(data) { $(“#myDiv”).html(data); }); $.getJSON({“http://example.com/recurso”, function(data) { $(“#myDiv”).html(data); }); o también
  • 25. Curso de Desarrollo Web HTML5 Elementos Cool ● LocalStorage ● GeoLocation ● Template ● ...
  • 26. Curso de Desarrollo Web Uso de geoLocation navigator .geolocation .getCurrentPosition(getCoords, errorFound); function errorFound(err) { alert(“Ocurrió un error: “ +err); } function getCoords(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; alert(“Tu posición es: “ + lat + “;” + lon); }
  • 27. Curso de Desarrollo Web Uso de <template> <template id=”myTemplate”> <h1></h1> <p></p> </template> HTML
  • 28. Curso de Desarrollo Web Uso de <template> <template id=”myTemplate”> <h1></h1> <p></p> </template> HTML var t = document.querySelector(“myTemplate”); var clone = document.importNode(t.content, true); clone.querySelector(“h1”).innerHTML = “Platzi” clone.querySelector(“p”).innerHTML = “Aprende a crear el futuro de internet”; document.body.appendChild(clone); JS
  • 29. Curso de Desarrollo Web Uso de <template> <template id=”myTemplate”> <h1></h1> <p></p> </template> HTML var t = document.querySelector(“myTemplate”); var clone = document.importNode(t.content, true); clone.querySelector(“h1”).innerHTML = “Platzi” clone.querySelector(“p”).innerHTML = “Aprende a crear el futuro de internet”; document.body.appendChild(clone); JS Resultado HTML <h1>Platzi</h1> <p>Aprende a crear el futuro de internet</p>
  • 30. Curso de Desarrollo Web Uso de LocalStorage var elemento = “hola mundo”; localStorage.setItem(“clave”, elemento); console.log(localStorage.getItem(“clave”)); // hola mundo
  • 31. Curso de Desarrollo Web Uso de LocalStorage var obj = { “titulo”: “desarrollo web”, “nivel”: “básico”, “plataforma”: “Platzi” }; var objString = JSON.stringify(obj); localStorage[‘curso’] = objString; var elem = localStorage.curso; var elemParsed = JSON.parse(elem); console.log(elemParsed); // {“titulo”: “desarrollo web”, “nivel”: “básico”, “plataforma”: “Platzi”}