JAVASCRIPT
JAVASCRIPT
JAVASCRIPT
Variables
Sin las variables sería imposible escribir y crear "programas genéricos", es decir,
códigos que funcionan de la misma manera independientemente de los valores
concretos usados. Las variables en JavaScript se utilizan mediante la palabra reservada
‘var’.
La palabra ‘var’ solamente se indica al definir por primera vez la variable, y a eso lo
llamamos ‘declarar’ una variable
El nombre de una variable también se le conoce como identificador y debe cumplir la
siguiente normativa:
El identificador únicamente puede estar formado por números, letras, y los símbolos
‘$’ y ‘_’ a lo sumo.
El primer carácter del identificador no debe ser un número.
Tipos de datos
Ya sabemos que todas las variables en JavaScript se crean a través de la palabra
reservada “var” pero dependiendo de los valores que almacenen pueden ser de un tipo u
otro.
Numéricos
Se usan para contener valores numéricos enteros (llamados integer) o decimales
(llamados float).
Cadenas de Texto
Se usan para contener caracteres, palabras y/o frases de texto
Arrays
Un array es una colección de variables, sin importar los tipos de los que sean cada una.
Los arrays sirven para guardar colecciones de valores, de manera que serviría para
agrupar diferentes variables. Por ejemplo, tenemos esta sucesión de variables con los
días de la semana:
Ese conjunto de datos no se puede manipular de forma conjunta, pues cada uno está en
una variable diferente. Si los almacenamos en un array, estarían todos los datos
apuntados por una variable que podría recorrerse con una instrucción for. Para
guardarlos en un array sería: var dias = ["Lunes", "Martes", "Miércoles", "Jueves",
"Viernes", "Sábado", "Domingo"] Este array luego se puede recorrer para, por ejemplo,
mostrar sus valores:
Booleanos
Las variables de tipo booleano también son llamadas o denominadas con el nombre de
variables de tipo lógico. Estas variables suelen servir para condiciones o para la
programación lógica.
Operadores
Los operadores manipulan los valores de las variables, realizan cálculos matemáticos y
comparan los valores de diferentes variables.
Veamos los diferentes tipos:
Asignación
Sirve para asignar un valor a una variable.
Incremento y decremento
Ambos operadores sirven para decrementar o incrementar el valor de una variable.
Lógicos
Los operadores lógicos son adecuados para realizar condiciones y lógica matemática.
Negación
El operador de negación se utiliza para dar el valor contrario a una variable.
Matemáticos
Los operadores declarados son: suma (+), resta (-), multiplicación (*) y división (/).
Relacionales
Los relacionales: mayor que (>), menor que (<), mayor o igual (>=), menor o igual
(<=), igual que (==) y distinto de (!=).
AND
Este operador sirve para combinar los valores de dos variables, usando lógica
matemática y solo dando true si ambos valores son true.
OR
Este operador sirve para combinar los valores de dos variables, usando lógica
matemática y solo dando true si alguno de los valores es true. En otro caso el valor final
es false.
Los códigos que se pueden escribir usando solo variables y operadores, son una
sucesión de instrucciones básicas.
Hay programas complejos como recorrer un array o establecer una condición que no
pueden ser realizadas simplemente con una sucesión de instrucciones básicas, es por
ello que necesitamos instrucciones de control de flujo que nos permite elegir líneas para
ejecutar dentro de nuestro código o repetir una serie de líneas un número de veces según
una condición.
Son instrucciones del tipo:
"si se cumple esta condición, hazlo; si no se cumple, haz esto otro"
"repite esto mientras se cumpla esta condición".
Utilizar este tipo de estructuras de control de flujo, convierte a los programas en
“inteligentes” permitiendo tomar decisiones en función del valor de las variables
utilizadas.
Funciones
El propio lenguaje nos aporta una serie de eventos para medir la interacción del usuario
con nuestra aplicación. Estas funciones creadas en JavaScript son denominadas
“manejadores de eventos” o “event handlers”.
Este método es quizás el menos práctico ya que impide la reutilización del código
JavaScript (que solo se encuentra asignado a ese atributo).
Variable this
La variable “this” es especial en JavaScript. Se usa para que tome como valor el
invocador del evento dentro del manejador. Es decir, qué componente nos ha invocado a
la función.
Funciones externas
Es mucho mejor para nuestro código y para el reutilizamiento externalizar todas
nuestras sentencias JavaScript en funciones externas.
De ese modo, llamamos en nuestros manejadores de eventos a estas funciones externas.
Eventos semánticos
Esta implementación del manejador se basa en la externalización del código JavaScript,
seleccionando el componente al que queremos agregar un manejador de evento y
desvinculando completamente nuestro código HTML del código JavaScript.
Algunas de las particularidades o reglas del formato JSON a tener en cuenta son:
Son duplas nombre-valor y los nombres van delimitados por comillas, tanto
simples como dobles, aunque pueden aparecer sin ellas.
JSON puede representar los seis tipos de valores de JavaScript: objetos, Arrays,
números, cadenas, booleanos y null.
Las fechas no son un tipo de objeto propio.
Los números no pueden ir precedidos de ceros a no ser en el caso de notación
decimal (Ejemplo: 0.001).
JSON es considerado un lenguaje independiente
Sus objetos deben ser considerados como cadenas Javascript, no como objetos
nativos.
El estándar DOM
El árbol que se genera no representa únicamente los contenidos del fichero origen
(mediante los nodos del árbol) sino que representa sus relaciones (mediante las ramas
del árbol que conectan los nodos).
Manipulación de un HTML con DOM JavaScript
Una de las principales ventajas del uso del DOM es que permite a los desarrolladores
web disponer de un control preciso sobre la estructura o forma del documento HTML o
XML que están controlando. Las funciones que usa DOM permiten añadir, eliminar,
modificar y reemplazar cualquier nodo de cualquier documento sencillamente.
Los documentos XML y HTML son convertidos por DOM en una jerarquía de
nodos. Los nodos pueden ser de diferentes tipos.
Document: nodo raíz de los documentos HTML y XML. Todos los demás salen
de él.
DocumentType: nodo que contiene la representación del DTD empleado en la
página (indicado mediante el DOCTYPE).
Element: contenido definido por un par de etiquetas (o tags) de apertura y cierre
(<etiqueta>...</etiqueta>) o de una etiqueta abreviada que se autocierra
(<etiqueta/>). Es el único nodo que puede tener tanto nodos hijos como atributos.
Attr: el par nombre-de-atributo/valor.
Text: el contenido del texto que se halla entre una etiqueta de apertura y una de
cierre. También guarda el contenido de una sección de tipo CDATA.
CDataSection: nodo que muestra una sección tipo <![CDATA[ ]]>.
Comment: un comentario de XML.
Y otros menos usuales: DocumentFragment, Entity, EntityReference,
ProcessingInstruction y Notation.
Selectores y DOM
Y a partir de este momento, podemos usar cualquier función o propiedad de DOM para
nuestro código JavaScript.
JQuery
Es una librería JavaScript que nos permite acceder a los objetos del DOM de manera
simple creada por John Resig (Mozilla).
Como los desarrollos web son cada vez más complejos, con funcionalidades de
autocompletar, drag & drop, validaciones y un largo etcétera; se necesitan algunas
herramientas que no nos las hagan desarrollar desde cero. Esto son las librerías de
terceros, entre ellas JQuery, que están hechas para simplificar y aclarar nuestro código
JavaScript. Adicionalmente nos suelen resolver los problemas de códigos que funcionen
de manera diferente en distintos navegadores.
Ventajas:
Ahorra muchas líneas de código.
Transparenta el soporte de nuestra aplicación para los principales navegadores.
Provee un mecanismo para capturar los eventos.
Desventajas:
Provee un conglomerado de funciones para hacer animaciones en la página de
una manera muy simple.
Integra funcionalidades para trabajar con AJAX.
Ajax: tecnologías implicadas y funcionamiento
Tecnologías implicadas
El desarrollo de aplicaciones AJAX requiere un conocimiento avanzado de todas y cada
una de las tecnologías y componentes siguientes:
XHTML y CSS, crea una presentación basada en estándares.
XMLHttpRequest, es el objeto encargado del intercambio asíncrono de
información.
DOM, para la manipulación e interacción dinámica de la capa de presentación.
XML, XSLT y JSON, son las tecnologías que constituyen el intercambio y la
manipulación de la información.
JavaScript, como unión de todas tecnologías.
Funcionamiento
En los antiguos desarrollos web, acciones que realice nuestro cliente sobre la página
desencadenaban llamadas al servidor. Y una vez el servidor hubiera acabado con ese
tráfico de información devolvía y, por tanto, recargaba, la página web en nuestro
cliente.
Veamos como es este proceso en AJAX:
NodeJS: Creación de un servidor HTTP
Aunque más adelante hablaremos de la introducción de módulos en NodeJS, es
necesario abordar un primer módulo imprescindible para la creación de un servidor
de HTTP. Este es el módulo http.
Las interfaces HTTP en Node están diseñadas para soportar muchas de las
características del protocolo que tradicionalmente han sido difíciles de usar. En
particular, los mensajes grandes, seguramente fragmentado. La interfaz se asegura de
que las peticiones o respuestas nunca se almacenen completamente en un búfer--se
permite al usuario hacer stream de datos. Las cabeceras de los mensajes HTTP se
representan por un objeto como este:
Manipulación de peticiones
Para poder realizar la manipulación de peticiones es necesario instalar el módulo de
express en nuestra aplicación. Pero, ¿para qué sirve este módulo y que es lo que nos
ofrece?
¿Qué es el módulo express?
Express es un módulo de NodeJS que se puede instalar a través de la herramienta npm.
En una definición exacta sería: el framework que se lanza sobre un servidor http de
NodeJS para manipular las rutas y dar acceso de un modo sencillo al cliente para
acceder al ciclo de vida de la aplicación.
Creando rutas
Las rutas nos permiten direccionar peticiones a los controladores correctos.
Vamos a empezar agregando el código de un controlador para una ruta:
Ahora podemos hacerle un post desde cualquier app que nos permita hacerlo. Se puede
utilizar una extensión de Chrome llamada Postman, desde ahí le podemos enviar lo
siguiente a "http://localhost:3000/users":