Teoria Parcial 02
Teoria Parcial 02
JAVASCRIPT
Lenguaje interpretado, dialecto de ECMAScript.
La sintaxis es semejante al C pero las variables no están tipificadas y no distingue entre mayúsculas y
minúsculas.
No existe un cuerpo principal del programa (main), todo lo que no esté dentro de una función es ejecutado.
En JavaScript todo son objetos.
Declarar las variables y funciones antes de usarse.
No es obligado usar ; al final de las sentencias
El sangrado es para mejorar la lectura.
Un grupo de sentencias multiples se agrupan con {}
Herramientas en Javascript
Declaracion de variables
var: permite definir una variable local en una función o global si está fuera de una función.
let: declara una variable local al ámbito en el que esté definida.
const: Declara una constante de solo lectura en un ámbito.
Funciones
function grado() {
function titulo(name) {
return "Dr. " + name; }
return titulo; //una función!
}
let phd = grado();
phd("Turing"); //Dr Tuning
Tipos de nodos
● Un motor de renderizado (web browser engine) es el software que toma contenido marcado (como
HTML, XML, archivos de imágenes, etc.) e información de formateo (como CSS, XSL, etc.) y luego
muestra el contenido ya formateado en la pantalla.
■ Los motores de renderizado lo usan los navegadores web, clientes de correo electrónico, u
otras aplicaciones que deban mostrar contenidos web.
■ Cada motor de renderizado del navegador suele tener su propio intérprete Javascript (script
engine).
Render Tree
● Los árboles DOM y CSSOM se combinan para formar el árbol de representación.
● Render tree: El árbol de representación solo contiene los nodos necesarios para representar la
página.
● Layout: El diseño calcula la posición y el tamaño exactos de cada objeto.
● Paint: El último paso es la pintura, que recibe el árbol de representación final y representa los píxels
en la pantalla.
JS en el navegador
● Dentro de la etiqueta script tanto en la cabecera como en el body.
<script> console.log(‘hola’); </script>
● Importando un fichero externo
<script src="mi_url" defer></script>
<script src="mi_url2" defer></script>
La etiqueta script tiene 2 atributos cuando se importa un el código de un fichero externo:
● async: Indica que los recursos se cargan asíncronamante y se ejecutan cuando están preparados
● defer: Los recursos se cargan asíncronamente y se ejecutan cuando el DOM se ha cargado
ejecutándose los scripts por orden.
DIFERENCIAS JAVASCRIPT/NODEJS
JavaScript se ejecuta en el navegador, mientras que el uso de Node.js nos permite ejecutar JavaScript fuera
del navegador (Script Engine V8).
Interfaz WINDOW
● La interfaz Window representa una ventana que contiene un documento DOM HTML.
● El objeto window es el de mayor nivel en la jerarquía de objetos de JavaScript en el navegador.
● Es un objeto global en JavaScript. Contiene todas las variables y funciones globales.
● Representa la "ventana del navegador" y proporciona los métodos para controlarlo.
Gestión de eventos
● EventTarget permite detectar/recibir los eventos que se producen en el DOM o HTML DOM
● Window, Document y Element (SVGELEMENT)soportan definir detectores de eventos, “event
handlers”.
<script type="text/javascript"> function recuperar(Id) {
var Autor=""; var node0=null; var node = document.getElementById(Id);
node.appendChild(node0);
function borrar(val) { node0=val; alert("nodo recuperado:");}
console.info("nodo a </script>
borrar:"+node0.nodeName);
console.info("val:"+val.nodeName); <div>
var node=val.parentNode; <p id="borrar">Mueve ratón <span
node.removeChild(node0); onMouseOver="borrar(this) ;">AQUÍ</span>:</p>
alert("¿Algo borrado ?");} <p><span onClick="recuperar('borrar');">PULSA
AQUI</span> para recuperar el original</p>
</div>
Registro eventos
x.addEventListener ("Evento", funcionEjecutar, boolean)
Fases eventos
● Capture : Al realizar el cliente un evento, el navegador sabe que se ha producido un evento,y busca
desde la raíz del DOM para ver donde se ha producido (event object)
● Target : Una vez sabe en qué elemento se ha producido (event target object) el explorador
comprueba si tiene algún controlador en ese elemento, si existe lo ejecuta.
● Bubbling : Después de disparar el lanzador, busca hacia la raíz, si en los niveles padre del elemento
hay algún otro controlador que se active con ese evento, en su caso lo lanzará. Esta etapa de su
movimiento hacia arriba se llama la propagación de eventos
JSON: Datos estructurados para intercambio de datos
JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos.
Propiedades:
● Ligero: Formato ligero para el intercambio de datos.
● Simple: Formato sencillo de leer por humanos y de parsear/analizar por máquinas.
● Funcional: Los objetos JSON están tipificados.
● Abierto: Formato de texto independiente del lenguaje.
● Extensible: Formado por unas estructuras que pueden anidarse.
JSON en HTTP
En HTTP se transmite texto por ello :
<?php
$json ='[{"id_fruta":"1","nombre_fruta":"Manzana","cantidad":"5"},
{"id_fruta":"2","nombre_fruta":"Platano","cantidad":"3"}]';
$arrayF = json_decode($json);
//OBTENER UN DATO DIRECTAMENTE DEL ARRAY.
print_r($arrayF[0]->nombre_fruta);
//RECORRER Y RECUPERAR VALORES JSON CON FOREACH.
foreach($arrayF as $obj){
$id_fruta = $obj->id_fruta;
$nombre_fruta = $obj->nombre_fruta;
$cantidad = $obj->cantidad;
echo "<br>\n".$id_fruta." ".$nombre_fruta." ".$cantidad;
}
?>
header('Content-type: application/json');
$result = $pdo->prepare("SELECT * FROM A_GrupoCliente");
$result->execute();
$datos = $result->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($datos);
m
CORS
● Por seguridad JS no permite que una aplicación que reside en un servidor pueda extraer datos de
otro.
● El uso compartido de recursos de origen cruzado (CORS- introducido en HTML5) permite a las
aplicaciones web de un dominio realizar solicitudes de dominio cruzado.
● Hay que habilitar estas llamadas tanto en el servidor como en el cliente.
AJAX es un acrónimo de Asynchronous JavaScript + XML , que se puede traducir como "JavaScript asíncrono
+ XML".
● AJAX mejora la interacción del usuario con la aplicación, evitando las recargas constantes de la
página.
● En el cliente requiere un motor del Ajax que se conecta con el servidor de forma asíncrona,(API
XMLHttpRequest).
● En el servidor no se requiere nada en particular, simplemente debe devolver el recurso que se le
solicita.
Promesas
● Las promesas son un Patrón de diseño para controlar la ejecución de un determinado cómputo del
cual no sabemos: ni cómo, ni cuándo se nos va a devolver un determinado valor.
● Una promesa es un objeto que por medio de una máquina de estados podemos controlar cuándo
un valor está disponible o no.
● Los métodos de las promesas devuelven promesas, permitiendo que las promesas se puedan
encadenar.
Métodos promesas
promise = new Promise(function(resolve, [reject]) { });
function isDinnerTime() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
const now = new Date();
if (now.getHours() >= 22) {
resolve("yes");
} else {
reject("no");
}
}, 1000);
});
}
isDinnerTime()
.then((data) => console.log("success: " + data))
.catch((data) => console.log("error: " + data));
API FETCH
● es una API más simple y limpia que XHTMLRequest.
● No envia ni recibe ninguna cookie.
● Utiliza las promesas de JavaScript.
● El objeto Fetch permite solicitar recursos definidos y devuelve un objeto Response que es una
promesa.
● fetch(resource[, initRequest])*
FETCH GET
fetch("./api/some.json")
.then(function (response) {
if (response.status !== 200) {
console.log(
"Looks like there was a problem.
Status Code: " + response.status
);
return;
} // Examine the text in the response
response.json().then(function (data) {
console.log(data);
});
})
.catch(function (err) {
console.log("Fetch Error :", err);
});
Objeto FETCH
● resource(recurso de la petición):
○ una cadena con la URL .
○ o un objeto Request.
● initRequest: Objeto JSON de inicialización de la petición, cuyos valores sobrescriben los que existen
en el objeto Request. Es optativo. Estos parámetros pueden ser:
○ Cadena method: request HTTP method:Por defecto GET.
○ Objeto headers: request HTTP headers.
○ Objeto body: request HTTP body.
○ Cadena mode: cors, no-cors, same-origin, navigate.
Objeto REQUEST
Objeto que contiene los datos para la solicitud de un recurso para la petición Fetch.
request = new Request([recurso][,requestInit]])
Objeto BODY
Objeto proporciona métodos relacionados con el contenido de la respuesta/solicitud, lo que le permite
declarar cuál es su tipo y cómo debe manejarse.
body: "foo=bar&lorem=ipsum";
RESPONSE
● Representa la respuesta a una solicitud.
● Es la promesa que devuelve fetch.
● Devolverá un error sólo cuando hay un error de red. No el código de error HTTP como 404 o 500.
● Métodos:
○ response.ok : true (false) si el estado esta entre 200-299.
○ response.status: Código HTTP de respuesta.
Tipos de respuesta:
● response.arrayBuffer(): El objeto ArrayBuffer se usa para representar un buffer genérico, de datos
binarios crudos (raw) con una longitud específica
● response.blob():Un objeto Blob representa un objeto tipo fichero de datos planos inmutables
● response.json()
● response.text()
WP REST API
Existe un Endpoint especial, llamado wp-json, al que se accede mediante la ruta raíz o inicial y que devuelve
toda la información relativa a la API REST.
La api Rest de Wordpress permite realizar operaciones CRUD pueden afectar a cualquiera de los elementos
de información de nuestro sitio WordPress:
Seguridad
La seguridad supone un coste económico y de eficiencia.
● El riesgo cero no es práctico
● Hay diversas formas de mitigar el riesgo
● No se puede gastar un millón para proteger un céntimo
Tipos de seguridad:
1. Seguridad en el Cliente:
Aparece incrustado en un documento HTML. Un cliente de correo o un navegador que
cargue el documento lo ejecutará en la máquina cliente.
2. Seguridad en el Servidor:
Revisar periódicamente los ficheros de log (access_log y error_log en Apache) para detectar
posibles ataques.
3. Seguridad en la Comunicación:
Conectar con un sitio web protegido con SSL
4. Seguridad en la Aplicación:
Almacenar los datos sensibles de forma encriptada