Scripting Front/Back Flashcards
¿Cuál es el estandard de Javascript?
ECMA-262
Paradigmas que implementa JavaScript
- Funcional –> se pueden asignar funciones a variables
- Imperativo –> Bucles, if
- Procedural –>
- ‘Orientado a objetos’ –> Basado en objetos/prototipos
Caracteristicas Javascript (ES5)
- Interpretado –> lo interpreta el cliente, no se compila
- Funciones de primera clase –>
- Poder pasar funciones como argumentos a otras funciones.
- Que el valor de retorno de una función sea otra función.
- Asignar funciones a variables o almacenarlas en estructuras de datos.
- Basado en prototipos
- Dinamico
- Orientado a eventos
- Clausuras
- ES6 añadió nuevas caracteristicas –>
- Promesas
- Clases
- Array functions (foreach, map, filter)
- Arrow functions (=lambda)
Motores Javascript en los principales navegadores
- Edge –> Chakra
- Chrome –> V8
- Firefox –> SpiderMonkey
- Safari –> Nitro
- Opera –> V8
Leguajes basados en Javascript. Trasnpilers
- TypeScript (MS)
- CoffeScript
- Trasnpiladores –> De fuente a fuente
- Babel
- Traceur
- TSC
Si hablamos de un runtime enviroment Javascript, hablamos de ….
NodeJS (interprete V8)
NOTA: Necesitamos tener instalado NodeJs si pretendenmos usar los gestores de paquetes escritos en JS (npm, Yarn)
Aplicaciones para gestión Paqueteria/Dependencias ‘mundo’ Front
- nodeJS –> maquina virtual de javascript. Motor V8(igual que Google Chrome) lo necesitamos para correr los gestores de dependencias.
- npm –> escrito en javascript. Gestión de paquetes
- Yarn –> escrito en javascript
- Bower–> Dependencias
- Ficheros de configuración –> packet.json
Aplicaciones para automatización de tareas
- Grunt –> viejuna
- Gulp –> viejuna
- Empaquetadores (Packet bundle)–> nuevos. Pruebas, limpieza y empaquetado
- Webpack
- Parcel
- Rollup
- Browserify
- ESBuild
Frameworks Javascript
- VUE (Chino)
- React (libreria, Facebook)
- Angular (Google)
- Ember
- Express para Back
Si decimos ‘JavaScript Vanilla’, ¿A qué nos referimos?
A Javascript puro.
¿Qué es JQuery?
Es una libreria. No confundir con los frameworks (Angular, React)
Como creo una app Angular desde cero
- Intalamos o tenemos ya instalado NodeJS
- Instalamos Angular –>
npm install -g @angular/cli
- Creamos un proyecto –>
ng new my-angular
- Creamos componentes –> ver imagen
ng g c home
- Empaquetamos –>
ng build
Versiones de ECMAScript y sus años
- ES5 –> 2011
- ES6 –> 2015
- ES7 –> 2016
Tres manera de definir variables en Javascript
- const –> valor constante
- var –> variable con mucho ambito/alcance (desaconsejado)
- let –> variable con ambito/alcance local
¿Para que sirve ‘call’ en JS?
Con ‘call’ podemos invocar una función. Imaginemos que tenemos contenida la funcion en una variable/parametro de otra función, y queremos ejecutarla:
function f1(){ console.log('Texto F1'); } function f2(){ console.log('Texto F2'); } function invocadora (f) { f.call } invocadora(f2);
Mostrará en pantalla el texto ‘Texto F2’
NOTA: Se prodria ejecutar como ‘f.call()’ o como ‘f()’
Programación orientada a prototipos. Ejemplo
//Funcion constructora o generadora function Person(edad, nombre){ this.edad = edad; this.nombre = nombre; } Person.prototype.saluda=function(){ console.log('Hola, soy ' + this.nombre + ' y tengo ' + this.edad + ' años' ); } let p1 = new Person(30, 'Luis'); let p2 = new Person(40, 'Maria'); p1.saluda(); p2.saluda();
Consola:
Hola, soy Luis y tengo 30 años Hola, soy Maria y tengo 40 años
NOTA: si metiesemos la función dentro de Person, al crear objetos nos la duplicaría por cada objeto pero al hacerlo a través de ‘prototype’ solo la crea una vez
Tipos de datos en Js
- Number
- String
- Boolean
- Array
- Object
- null
- undefined
Operadores en JS
- Asignación –> =
- Aritmeticos –> +, -, *, /, %, **
- Logicos –> !, &&, ||
- Relacionales –> >, <, >=, >=, ==, !=, === (valor y tipo)
- Operador flecha –> =>
- typeof, instanceof, delete, void,
- A nivel de bits -> |, &, ^, ~, <<, >>, >>>
Manejo del objeto Arrays en Js
let colors = ['red', 'green', 'blue']; console.log('tercer elemento: ' + colors.at(2)) ; //Sacar el último elemento eliminandolo console.log(colors.pop()) ; //blue --> colors = ['red', 'green']; console.log(colors.pop()) ; //green --> colors = ['red']; //Meter por el final y retorna el nuevo número de elementos console.log(colors.push('violet')) ; //2 --> colors = ['red', 'violet']; console.log(colors.push('purple')) ; //2 --> colors = ['red', 'violet', 'purple']; //Sacar el primer elemento eliminandolo console.log(colors.shift()) ; //red --> colors = ['violet', 'purple']; console.log(colors.shift()) ; //violet --> colors = ['purple']; // color.sort() // Array.prototype.length (propiedad) --> color.length // color.forEach( (element) => console.log(element)); --> ejecuta la función // por cada elemento // * color.splice(start, num.Borrados, itemInsert, ....)
Funcion ‘splice()’ de los arrays en JS
Función ‘navaja suiza’. En el lugar del índice dado, borra tantos elementos como se indique y añade en esa posición los elementos listados.
splice(start) splice(start, deleteCount) splice(start, deleteCount, item1) splice(start, deleteCount, item1, item2) splice(start, deleteCount, item1, item2, /* …, */ itemN) //******************* //Remove 0 (zero) elements before index 2, and insert "drum" const myFish = ["angel", "clown", "mandarin", "sturgeon"]; const removed = myFish.splice(2, 0, "drum"); // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] //******************** //Remove 1 element at index 2, and insert "trumpet" const myFish = ["angel", "clown", "drum", "sturgeon"]; const removed = myFish.splice(2, 1, "trumpet"); // myFish is ["angel", "clown", "trumpet", "sturgeon"] // removed is ["drum"] //********************** //Remove 2 elements from index 0, and insert "parrot", "anemone" and "blue" const myFish = ["angel", "clown", "trumpet", "sturgeon"]; const removed = myFish.splice(0, 2, "parrot", "anemone", "blue"); // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // removed is ["angel", "clown"]
Manejo del objeto JSON en Js
- El método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON, opcionalmente reemplaza valores si se indica una función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.
- El método JSON.parse() analiza una cadena de texto como JSON, transformando opcionalmente el valor producido por el análisis.
JSON.stringify(value) JSON.stringify(value, replacer) JSON.stringify(value, replacer, space) //********************** let person = { firstName: 'John', lastName: 'Doe'; age: 30 }; console.log(JSON.stringify(person)); //{"firstName": "John", "lastName": "Doe", "age": 30}; //************************** JSON.parse(text[, reviver]) //************************** const personJson = {"firstName": "John", "lastName": "Doe", "age": 30}; let personObj = JSON.parse(personJson); console.log(personObj.firstName); // John
Cómo hariamos herencia en Javascript
Encadenando prototypes.
funcion Persona(){ } Persona.prototype.saluda = function() { console.log('Hola mundo');} function Empleado(){ } Empleado.prototype = Persona.prototype //Habriamos heredado de Persona
Producto para calidad de código en JS
ESLint
Expresiones regulares en JS
- test(text) –> Comprueba si la expresión regular «casa» con el texto text pasado por parámetro.
- exec(text) –> Ejecuta una búsqueda en el texto text. Devuelve un array con capturas de lo que coincide.
- texto.match(regex) –> como test pero se usa de otra manera, con el regex por parametro
NOTA: Estas funciones son de patron, seria algo asi como:
var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz");