Qué Es JavaScript
Qué Es JavaScript
Qué Es JavaScript
Las tres capas se superponen muy bien. Tomemos una etiqueta de texto simple como
ejemplo. Podemos marcarla usando HTML para darle estructura y propósito:
<p>Player 1: Chris</p>
Copy to Clipboard
Luego, podemos agregar algo de CSS a la mezcla para que se vea bien:
p{
font-family: 'helvetica neue', helvetica, sans-serif;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
border: 2px solid rgba(0,0,200,0.6);
background: rgba(0,0,200,0.3);
color: rgba(0,0,200,0.6);
box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
border-radius: 10px;
padding: 3px 10px;
display: inline-block;
cursor: pointer;
}
Copy to Clipboard
para.addEventListener('click', updateName);
function updateName() {
let name = prompt('Enter a new name');
para.textContent = 'Player 1: ' + name;
}
Copy to Clipboard
Intenta hacer clic en esta última versión de la etiqueta de texto para ver qué sucede (ten en
cuenta también que puedes encontrar esta demostración en GitHub — ¡consulta el código
fuente o ejecútalo en vivo)!
JavaScript puede hacer mucho más que eso — exploremos qué con más detalle.
Las API son conjuntos de bloques de construcción de código listos para usar que permiten a
un desarrollador implementar programas que de otro modo serían difíciles o imposibles de
implementar. Hacen lo mismo para la programación que los kits de muebles prefabricados
para la construcción de viviendas — es mucho más fácil tomar paneles precortados y
atornillarlos para hacer una estantería que elaborar el diseño tú mismo, que ir y encontrar la
madera correcta, cortar todos los paneles del tamaño y la forma correctos, buscar los
tornillos del tamaño correcto y luego júntalos para hacer una estantería.
Las APIs del navegador están integradas en tu navegador web y pueden exponer datos del
entorno informático circundante o realizar tareas complejas y útiles. Por ejemplo:
La API del DOM (Document Object Model) te permite manipular HTML y CSS, crear,
eliminar y cambiar el HTML, aplicar dinámicamente nuevos estilos a tu página, etc.
Cada vez que ves aparecer una ventana emergente en una página, o se muestra
algún nuevo contenido (como vimos anteriormente en nuestra sencilla
demostración), por ejemplo, ese es el DOM en acción.
La API de Geolocalización recupera información geográfica. Así es como Google
Maps puede encontrar tu ubicación y trazarla en un mapa.
Las APIs Canvas y WebGL te permiten crear gráficos animados en 2D y 3D. Las
personas están haciendo cosas increíbles con estas tecnologías web —
consulta Experimentos de Chrome y webglsamples.
APIs de audio y video como HTMLMediaElement y WebRTC te permiten hacer cosas
realmente interesantes con multimedia, como reproducir audio y video directamente
en una página web, o tomar video de tu cámara web y mostrarlo en la computadora
de otra persona (prueba nuestra sencilla demostración instantánea para hacerte una
idea).
La API de Twitter te permite hacer cosas como mostrar tus últimos tweets en tu
sitio web.
La API de Google Maps y la API de OpenStreetMap te permiten insertar mapas
personalizados en tu sitio web y otras funciones similares.
Nota: estas APIs son avanzadas y no cubriremos ninguna de ellas en este módulo. Puedes
obtener más información sobre estas en nuestro módulo de APIs web de lado del cliente.
¡También hay mucho más disponible! Sin embargo, no te emociones demasiado todavía.
No podrás crear el próximo Facebook, Google Maps o Instagram después de estudiar
JavaScript durante 24 horas — hay muchos conceptos básicos que cubrir primero. Y es por
eso que estás aquí — ¡sigamos adelante!
Recapitulemos brevemente sobre la historia de lo que sucede cuando cargas una página
web en un navegador (de lo que hablamos por primera vez en nuestro artículo Cómo
funciona CSS). Cuando cargas una página web en tu navegador, estás ejecutando tu código
(HTML, CSS y JavaScript) dentro de un entorno de ejecución (la pestaña del navegador).
Esto es como una fábrica que toma materias primas (el código) y genera un producto (la
página web).
Cada pestaña del navegador tiene su propio depósito separado para ejecutar código (estos
depósitos se denominan "entornos de ejecución" en términos técnicos) — esto significa
que, en la mayoría de los casos, el código de cada pestaña se ejecuta de forma
completamente independiente y el código de una pestaña no puede afectar el código en otra
pestaña, o en otro sitio web. Esta es una buena medida de seguridad — si este no fuera el
caso, los piratas podrían comenzar a escribir código para robar información de otros sitios
web y otras cosas muy malas.
para.addEventListener('click', updateName);
function updateName() {
let name = prompt('Enter a new name');
para.textContent = 'Player 1: ' + name;
}
Copy to Clipboard
Aquí seleccionamos un párrafo de texto (línea 1), luego adjuntamos un detector de eventos
(línea 3) de modo que cuando se hace clic en el párrafo, el bloque de
código updateName() (líneas 5-8) se ejecuta. El bloque de código updateName() (estos tipos de
bloques de código reutilizables se denominan "funciones") pide al usuario un nuevo
nombre y luego inserta ese nombre en el párrafo para actualizar la pantalla.
Nota: Este es un error muy común; debes tener cuidado de que los objetos a los que se hace
referencia en tu código existan antes de intentar hacer algo con ellos.
Los lenguajes compilados, por otro lado, se transforman (compilan) a código máquina antes
de que sean ejecutados por la computadora. Por ejemplo, C/C++ se compila a código
máquina que luego ejecuta la computadora. El programa se ejecuta desde un formato
binario, que se generó a partir del código fuente del programa original.
También puedes escuchar los términos código de lado del servidor y de lado del cliente,
especialmente en el contexto del desarrollo web. El código de lado del cliente es un código
que se ejecuta en la computadora del usuario — cuando se ve una página web, el código de
lado del cliente de la página se descarga, luego se ejecuta y se muestra en el navegador. En
este módulo estamos hablando explícitamente de JavaScript de lado del cliente.
El código de lado del servidor, por otro lado, se ejecuta en el servidor, luego sus resultados
se descargan y se muestran en el navegador. Ejemplos de lenguajes web populares de lado
del servidor incluyen a ¡PHP, Python, Ruby, ASP.NET y... JavaScript! JavaScript también
se puede utilizar como lenguaje de lado del servidor, por ejemplo, en el popular entorno
Node.js — puedes obtener más información sobre JavaScript de lado del servidor en
nuestro tema Sitios web dinámicos — Programación de lado del servidor.
La palabra dinámico se usa para describir tanto a JavaScript de lado del cliente como a los
lenguajes de lado del servidor — se refiere a la capacidad de actualizar la visualización de
una página web/aplicación para mostrar diferentes cosas en diferentes circunstancias,
generando contenido nuevo según sea necesario. El código de lado del servidor genera
dinámicamente nuevo contenido en el servidor, p. ej. extraer datos de una base de datos,
mientras que JavaScript de lado del cliente genera dinámicamente nuevo contenido dentro
del navegador del cliente, p. ej. creando una nueva tabla HTML, llenándola con los datos
solicitados al servidor y luego mostrando la tabla en una página web que se muestra al
usuario. El significado es ligeramente diferente en los dos contextos, pero relacionado, y
ambos enfoques (de lado del servidor y de lado del cliente) generalmente funcionan juntos.
JavaScript interno
Copy to Clipboard
Copy to Clipboard
23. Guarda tu archivo y actualiza el navegador — ahora deberías ver que cuando haces
clic en el botón, se genera un nuevo párrafo y se coloca debajo.
Nota: Si tu ejemplo no parece funcionar, sigue los pasos nuevamente y verifica que hiciste
todo bien. ¿Guardaste tu copia local del código de inicio como un archivo .html? ¿Agregaste
tu elemento <script> (en-US) justo antes de la etiqueta </head>? ¿Ingresaste el JavaScript
exactamente como se muestra? JavaScript distingue entre mayúsculas y minúsculas y es
muy exigente, por lo que debes ingresar la sintaxis exactamente como se muestra; de
lo contrario, es posible que no funcione.
JavaScript externo
Esto funciona muy bien, pero ¿y si quisiéramos poner nuestro JavaScript en un archivo
externo? Exploremos esto ahora.
1. Primero, crea un nuevo archivo en el mismo directorio que tu archivo HTML del
ejemplo. Como nombre ponle script.js; asegúrate de que el nombre tenga la
extensión .js, ya que así es como se reconoce como JavaScript.
2. Reemplaza tu elemento <script> (en-US) actual con lo siguiente:
3. <script src="script.js" defer></script>
Copy to Clipboard
Copy to Clipboard
16. Guarda y actualiza tu navegador, ¡y deberías ver lo mismo! Funciona igual, pero
ahora tenemos nuestro JavaScript en un archivo externo. Por lo general, esto es
bueno en términos de organización de tu código y para hacerlo reutilizable en varios
archivos HTML. Además, el HTML es más fácil de leer sin grandes trozos de script
en él.
Ten en cuenta que a veces te encontrarás con fragmentos de código JavaScript real dentro
de HTML. Podría verse algo similar a esto:
function createParagraph() {
let para = document.createElement('p');
para.textContent = 'You clicked the button!';
document.body.appendChild(para);
}
<button onclick="createParagraph()">Click me!</button>
Esta demostración tiene exactamente la misma funcionalidad que en las dos secciones
anteriores, excepto que el elemento <button> incluye un controlador onclick en línea para que
la función se ejecute cuando se presiona el botón .
Sin embargo, no hagas esto. Es una mala práctica contaminar tu HTML con JavaScript, y
es ineficiente; tendrías que incluir el atributo onclick="createParagraph()" en cada botón al que
desees que se aplique JavaScript.
El uso de una construcción de JavaScript pura te permite seleccionar todos los botones
usando una instrucción. El código que usamos anteriormente para cumplir este propósito se
ve así:
Ejemplo
Esto puede ser un poco más largo que el atributo onclick, pero funcionará para todos los
botones, sin importar cuántos haya en la página, ni cuántos se agreguen o eliminen. No es
necesario cambiar el JavaScript.
Hay una serie de problemas relacionados con la carga de los scripts en el momento
adecuado. ¡Nada es tan simple como parece! Un problema común es que todo el HTML de
una página se carga en el orden en que aparece. Si estás utilizando JavaScript para
manipular elementos en la página (o exactamente, el Modelo de objetos del documento (en-
US)), tu código no funcionará si el JavaScript se carga y procesa antes que el HTML que
estás intentando haga algo.
document.addEventListener("DOMContentLoaded", function() {
...
});
Copy to Clipboard
Una solución pasada de moda a este problema solía ser colocar tu elemento script justo en la
parte inferior del cuerpo (por ejemplo, justo antes de la etiqueta </body>), para que se
cargara después de haber procesado todo el HTML. El problema con esta solución es que la
carga/procesamiento del script está completamente bloqueado hasta que se haya cargado el
DOM HTML. En sitios muy grandes con mucho JavaScript, esto puede causar un
importante problema de rendimiento y ralentizar tu sitio.
En realidad, hay dos modernas características que podemos usar para evitar el problema del
bloqueo de script: async y defer (que vimos anteriormente). Veamos la diferencia entre estas
dos.
Los scripts cargados con el atributo async (ve más abajo) descargarán el script sin bloquear el
renderizado de la página y lo ejecutará tan pronto como el script se termine de descargar. No
tienes garantía de que los scripts se ejecuten en un orden específico, solo que no detendrán la
visualización del resto de la página. Es mejor usar async cuando los scripts de la página se
ejecutan de forma independiente y no dependen de ningún otro script de la página.
Para resumir:
Comentarios
Al igual que con HTML y CSS, es posible escribir comentarios en tu código JavaScript que
el navegador ignorará y que existen simplemente para proporcionar instrucciones a tus
compañeros desarrolladores sobre cómo funciona el código (y a ti, si regresas a tu código
después de seis meses y no puedes recordar lo que hiciste). Los comentarios son muy útiles
y deberías utilizarlos con frecuencia, especialmente para aplicaciones grandes. Hay dos
tipos:
Un comentario de una sola línea se escribe después de una doble barra inclinada (//),
p. ej.
// soy un comentario
Copy to Clipboard
Copy to Clipboard
Entonces, por ejemplo, podríamos anotar el JavaScript de nuestra última demostración con
comentarios como este:
function createParagraph() {
let para = document.createElement('p');
para.textContent = 'You clicked the button!';
document.body.appendChild(para);
}
/*
1. Obtiene referencias de todos los botones de la página en un formato de arreglo.
2. Recorre todos los botones y agrega un detector de eventos 'click' a cada uno.
Resumen
Así que ahí tienes, tu primer paso en el mundo de JavaScript. Comenzamos solo con teoría,
para comenzar a acostumbrarte a por qué usarías JavaScript y qué tipo de cosas puedes
hacer con él. En el camino, viste algunos ejemplos de código y aprendiste cómo encaja
JavaScript con el resto del código en tu sitio web, entre otras cosas.