por
Ivan Robles
02Bases Web HTML, CSS y Javascript
Vamos a abordar el aspecto técnico acerca de las tecnologías que involucran las páginas web
...es un lenguaje de marcado que define la estructura del contenido. HTML consiste en una serie de elementos que se utilizan para encerrar, o envolver, diferentes partes del contenido para que aparezca de una manera determinada, o actúe de una manera determinada.
En la versión HTML5, también ha adquirido una estructura semántica, y cada vez menos de estilo (que se deja para CSS)
<html> (document) Básicamente representa al DOM, contiene todo en un documento HTML Contenido: Elemento <head> seguido de un <body> OBLIGATORIO
Se aplican a todo elemento, por lo que pueden o no tener un efecto
|
|
|
Estructura del código fuente HTML
Estructura Semántica de HTML
DOM (Document Object Model)
El DOM es un modelo de documento [y la API] que se carga en el navegador web y que representa el documento como un árbol de nodos [elementos HTML], en donde cada nodo representa una parte del documento (puede tratarse de un elemento, una cadena de texto o un comentario).
Estructura y Jerarquía del DOM
Debido a que HTML es un lenguaje de marcado con muchos años de existencia y muchas compañías de software han querido imponer sus propias formas de interpretearlo, hay ciertas cosas que podemos hacer para minimizar estos inconvenientes e incluso optmizar nuestro tiempo de desarrollo de codificación como programadores del sitio
Este sitio es muy útil y práctico, ya que permite verificar qué funciones o características se pueden usar en determinadas versiones de navegadores (según las necesidades y plataformas usadas) tanto de Computadora como en Smartphones: https://caniuse.com
Este sitio viene con muchas herramientas para novatos o inexpertos de una manera sencilla y amigable, unas de sus utilidades más destacables es su edtor de HTML WYSIWYG (What You See Is What You Get) las tablas de caracteres especiales en HTML y las plantillas en HTML vanilla que ofrece: https://www.html.am/templates/
Es considerado una de las fuentes más confiables de información para Desarrolladores Web en el mundo, aunque el navegador de Mozilla sigue siendo usado por una minoría (Firefox), la mayor parte del contenido está traducido en Español, vienen desde referencias de tecnologías HTML,CSS y JS así como tutoriales, guías y recomendaciones: https://developer.mozilla.org/es/
Es un sitio que permite verificar si un archivo .html está correctamente redactado y su sintaxis es correcta de acuerdo al estándar (aunque no se cumplan con las reglas o haya errores en el HTML, el sitio se renderizará de todas formas debido a a robustez de los motores web actuales): https://validator.w3.org/
Es un sitio hecho en github, cuya función es la minimizar el tamaño de los archivos .html que escribamos o subamos al sitio, esto es bastante útil ya que uno de los retos que siempre se enfrentan es la de la velocidad de carga de los sitios en internet
Es un editor de texto creado para ser usado con Git y Github por default, es muy versátil y tiene multitud de plugins y extensiones muy útiles por parte de la comunidad y es multiplataforma: https://atom.io/
Es un editor de código e IDE creado por Microsoft, tiene buen redimiento, es de uso general y al igual que Atom tiene muchos plugins y extensiones disponibles gracias a su gran comunidad: https://code.visualstudio.com/
Tal vez sea uno de los plugins más extendidos y usados en la programación de páginas Web, permite escribir código HTML de manera mucho más ágil y veloz y está soportado por varios editores de código actualmente (incluso por algunos editores Online): https://emmet.io/
Es uno de los mejores editores de código en línea de HTML/CSS/Javascript y es de uso gratuito, tiene integración con Github además de que enfocado al desarrollo de páginas web teniendo multitud de plantillas con distintos Frameworks, recomendado: https://codesandbox.io/
Es un editor Online cuyo backend y frontend están claramente separados, es muy flexible ya que la interfaz se ejecuta en el lado del navegador, pero el backend puede estar en la nube o incluso en la máquina local, lo que habilita enorme flexibilidad aunando que es Software Open Source y Gratuito, además de que declara tener más modularidad para personalizaciones: https://theia-ide.org/
Es una plataforma para subir snippets (pequeñas piezas de código) y compartirlos en otros sitios manera interactiva, es una herramienta muy completa, sobre todo para compartir código basado en HTML,CSS y JS: https://codepen.io/
Es el sitio de repositorio de código fuente social más famoso del mundo, está diseñado para su uso gratuito, público , privado y empresarial, hay muchísimos sitios, código fuente de todo tipo de tecnologías y lenguajes de programación donde talentosos programadores comparten su software con el mundo
CSS (hojas de estilo en cascada), describe cómo deben mostrarse los elementos HTML en la pantalla, en el papel o en otros medios. Ahorra mucho trabajo. Puede controlar el diseño de varias páginas web a la vez. Las hojas de estilo externas se almacenan en archivos CSS
-(Traducido) CSS Introduction, URL: https://www.w3schools.com/css/css_intro.asp
Sintaxis y partes básicas de CSS
Nombre: Simplemente el nombre del elemento HTML
ID: Todo elemento HTML cuyo atributo “id” sea el indicado en CSS
Clase: Todo elemento HTML cuyo atributo “class” sea el indicado en CSS
Descendant: Se define como varios selectores unidos por un simple espacio en blanco, los cuales estan anidados de izquierda a derecha (no importa si hay otros elementos en medio)
Child: Se indica con “mayor que” “>” y selecciona el 2do elemento inmediatamente anidado en el 1ro
Adjacent Sibling: “Hermano Adyacente” Se indica con signo de “más” “+” y selecciona el 2do elemento si el primero si antes está inmediatamente después del 1ro
General Sibling: “Hermano Genérico”Se indica con signo “tilde” “~” y selecciona los elementos dentro del padre después del primero
Pseudoclases
Son compañeros de todos los Selectores previos no son elementos ni atributos,representan un estado que puede ser resultado de algún evento en la página:
Ejemplos:
p:last-child { color:green }
a:hover { background-color:red }
(Representan estados en algún momento dado o posición también)
Media Query
Se refiere al Medio y características del Viewport (que es el polígono donde se renderizan finalmente los elementos HTML del documento)
normalmente se usa esta etiqueta Meta al principio del documento HTML, ayuda sobre todo al desarrollo de sitios mobile friendly
<meta name="viewport"
content="width=device-width,
initial-scale=1.0,
maximum-scale=1.0"/>
Es un cálculo que se realiza para decidir qué regla CSS aplicar cuando los mismos elementos HTML están siendo señalados por varias reglas CSS en el documento. Y si las reglas en conflicto suman lo mismo: Se aplica la última en ser declarada.
See the Pen CSSAnimation: Logo Animation, multi animation by Joan Leon (@nucliweb) on CodePen.
Es un sitio que tiene varias utilidades para la verificación de CSS incluso para hacer traducción (transpilación) desde y hacia dialectos como SCSS, LESS y SASS: https://codebeautify.org/css-tools
Es un sitio con muchas utilidades para escoger paletas de colores personalizadas o en tendencia, siempre de manera armónica: https://coolors.co/palettes/trending
Es un sitio que permite escoger paletas de colores haciendo uso de una IA: http://khroma.co/
Es un sitio con templates de sitios y estilos CSS: https://www.free-css.com/
...es un lenguaje de programación ligero, interpretado, o compilado justo-a-tiempo (just-in-time) con funciones de primera clase... es un lenguaje de programación basada en prototipos, multiparadigma, de un solo hilo, dinámico, con soporte para programación orientada a objetos, imperativa y declarativa...
-MDN Web Docs, Javascript, https://developer.mozilla.org/es/docs/Web/JavaScript
A partir de la versión ES2015 se han implementado muchos cambios haciendolo incompatible con versiones anteriores
Una solución ha sido emplear un Transpiler llamado BABEL el cual traduce las características y sintaxis nuevas de ES2015 a versiones compatibles con el navegador en uso que no aún no implementan los nuevos estándares.
En resumen: podemos usar esta herramienta ampliamente conocida por la comunidad para emplear las versiones más nuevas de Javascript asegurando compatibilidad.
Consideramos que JS es un lenguaje de programación ya que cuenta con los siguientes elementos
Palabras Reservadas:
- arguments
- await
- break
- case
- catch
- class
- const
- continue
- debugger
- default
- delete
- do
- else
- enum
- eval
- export
- extends
- false
- finally
- for
- function
- if
- implements
- import
- super
- switch
- this
- throw
- true
- try
- typeof
- var
- void
- while
- with
- yield
Tipos de Datos Primitivos en JS:
- undefined
- boolean
- number
- string
- bigint
- symbol
- object
- null (desciende de object)
- function
Son algunas palabras o signos reservados que tienen una funcionalidad incorporada usados en sentencias Javascript
- delete
- void
- typeof
- + (convierte operando a 'number')
- ! (NOT lógico)
Son anotaciones dentro del código fuente que permiten entender el programa y lo que hace, sirve para los desarrolladores y no influye en nada al funcionamiento del programa final.
//comentario de una línea
sentencia
/* Comentario
de
varias
líneas */
Dentro de las ciencias de la computación: Un programa es una serie de instrucciones a ser ejecutadas por una computadora. En este contexto, cada instrucción es una sentencia (statement). En Javascript cada sentencia es separada por un punto y coma ( ; )
let a,b,c ; // declaración de 3 variables
a = 1; // asignación de valor 1 a la variable a
b = “hello”; // asignación de valor “hello’ a la variable b
c = a; // asignación del valor de la variable a a la variable c
Un Bloque es un conjunto de cero o más sentencias demilitado por un par de llaves {}. Hay varios tipos de bloques en Javascript, como lo son los de Control de Flujo, Iteraciones, Funciones y otros.
if ... else
Permite ejecutar un bloque de sentencias si las condiciones a evaluar son verdaderas.
if (a > 0) {
result = 'positive';
} else {
result = 'NOT positive';
}
switch ... case
Evalúa una expresión comparándola con los los valores en las sentencias case y al final teniendo una sentencia default que se usa normalmente para ejecutarse en caso de no tener ningún valor igual a ninguna sentencia case anterior.
const expresion = 'galletas';
switch (expresion) {
case 'Pan Dulce':
console.log('No, es pan dulce');
break;
case 'Mangos':
console.log('No, son mangos');
break;
case 'galletas':
console.log('Sí, son galletas');
break;
default:
console.log(`No era nada de lo anterior`);
}
for
Son sentencias que, permiten repetir un número indicado de veces un bloque evaluando una expresión.
/* Crea un ciclo (o bucle) que consiste en 3 expresiones
(opcionales) entre paréntesis seguido de una sentencia o un
bloque de ellas.*/
for (let i=0 ; i < 5 ; i++ ) {
console.log("Hola, la variable i vale: "+i );
}
Resultado:
Hola, la variable i vale: 0
Hola, la variable i vale: 1
Hola, la variable i vale: 2
Hola, la variable i vale: 3
Hola, la variable i vale: 4
while
Crea un ciclo ejecutando el bloque o sentencia indicado mientras la condición a evaluar sea igual a true. La condición siempre es evaluada antes de empezar el bloque
while
let i = 0;
while (i < 4) {
console.log("i vale: "+i );
i++;
}
Resultado
i vale: 0
i vale: 1
i vale: 2
i vale: 3
Toda función en Javascript es un objeto del tipo `function` que por cierto tiene las mismas propiedades de un Objeto Javascript (con mayúscula ya que JS es sensible a mayúsculas) se inicializan con la palabra reservada function.
function miPrimeraFuncion(arg1, arg2)
{
//varias sentencias...
return arg1 + arg2;
}
Es una manera de declarar y asignar al mismo tiempo una función a una variable, si se omite el nombre se convierte en una "función anónima"
let miFuncion = () => {
console.log(“hola, soy una expresión de función flecha
anónima”);}
(() => {console.log('¡Me inicié inmediatamente!')})();
Las variables son espacios de memoria que reservamos para guardar valores (datos) del tipo que sea mientras el programa es ejecutado. A la creación de variables en tu programa se le llama: 'declarar' una variable. Palabras reservadas para declarar una variable en Javascript:
Comparación var, let , const
var | let | const | |
Redeclarable | ✅ | ❌ | ❌ |
Reasignable | ✅ | ✅ | ❌ |
Global | ✅ | ❌ | ❌ |
Bloque | ❌ | ✅ | ✅ |
Hoisted | ✅ | ❌ | ❌ |
Fuente: Nikita Hlopov's Frontend Dev Blog, 06/Oct/2021, Difference between var vs let vs const in JavaScript, Enlace: https://nikitahl.com/var-vs-let-vs-const
Como Javascript es un lenguaje Basado en Prototipos y Orientado a Objetos la manera en que se implementa es la siguiente partiendo de estos principios de la Programación Orientada a Objetos:
class Cuadro extends Poligono {
constructor(largo) {
super(largo);
this.name = 'Cuadro';
}
}
Un Arreglo (o Array) no es más que una lista de objetos o variables ordenada por su índice (orden actual) la cual tiene métodos para iterarla y realizar mutaciones en ella, puede cambiar de tamaño (número de elementos) y pueden ser elementos de cualquier tipo.
let unArreglo = [“hola”, 1, -99,
(n) => {return 0;}, [1,2] ] ;