Reseña histórica

Originalmente denominado LiveScript, fue desarrollado por Brendan Eich para Netscape Communications en 1995 para crear aplicaciones de internet en el cliente. Después de Netscape, la fundación Mozilla continuó desarrollando JavaScript para el navegador Firefox.

Mas o menos en la misma época, Sun Microsystems lanzó el lenguaje de programación JAVA (que originalmente fue llamado Oak), el que adquirió rápidamente popularidad así que por razones netamente comerciales se le cambia el nombre a Java.

ECMA Script (ES) fue desarrollado por ECMA International después de que la organización adoptó JavaScript.

La versión 1.0 apareció con la versión 2.0 del navegador de la misma empresa y mas tarde es incorporado en el iExplorer 3.0 de MiscroSoft. Poco tiempo después aparece también el VBScript (Visual Basic Script) de Microsoft, un buen competidor.

Versiones de JavaScript y ES
AñoJavaScriptESNavegador
19961.0Netscape 2
19971IE 4
19981.3Netscape 4
19992IE 5
20001.53IE 5.5 + Netscape 6 + Firefox 1
20111.8.55IE 9 + Firefox 4
2012Chrome 23 + Safari 6 + IE 10
2013Firefox 21 + Opera 15
20152015Parcialmente
2016Edge 14 + Safari 10
2017Chrome 58 + Firefox 54
2018Opera 55

Hoy en dia esta estandarizado en todos los navegadores parcialmente.

1. Que es un Script ?

Un script es una secuencia de ordenes, en un determinado lenguaje, que debe ser ejecutado por un interprete. Actualmente los dos lenguajes de script de lado del cliente, mas usados son JavaScript y VBScript del lado del servidor también tenemos a JavaScript (con Node.js) y PHP. La inclusión de scripts en los documentos HTML hace que éstos sean dinámicos. El contenido se genera en forma dinámica, mientras que los valores introducidos en los formularios pueden comprobar localmente, sin necesidad de contar con un servidor ni emplear un cierto tiempo en ello.

HTML
Para definir el contenido de las páginas web.
CSS
Para especificar el diseño de las páginas web.
JavaScript
Para programar el comportamiento de las páginas web.

A pesar del nombre, JavaScript, este lenguaje tiene poco que ver con JAVA.

2. Por qué JavaScript ?

Es un lenguaje de programación del lado del cliente. Actualmente los navegadores Web mas usados son Chrome, FireFox, Netscape Navigator e iExplorer, todos soportan JavaScript, pero solo el iExplorer soporta VBScript.

Es un lenguaje interpretado y no es compilado que se ejecuta del lado del cliente (en el navegador).

3. Preprocesadores

Es un lenguaje que se convierte a otro. Por la necesitdad de desarrollar mas rápido y quiero tener mas herramientas.

Para HTML
PUG
Para CSS
Sass, Less y Stylus.
Para JS
TypeScript yBabel

En el caso de JS, también se les llama Compiladores o Transpiladores, porque lo que se hacen es que tu puedes usar para desarrollar un lenguaje mas avanzado y moderno el cual luego es traducido o convertido a JavaScript clásico que es mas compatible con todos los navegadores

4. Linters

Nos permite resolver malas practicas, avisandonos de errores. Muy bueno para trabajar en grupo.

4.1 Formateadores

Para HTML
Prettier
Para CSS
StyleLint
Para JS
EsLint y TS Lint

4.2 Calidad de código (Testing)

Cada vez aumentamos mas la complejidad de nuestras apliaciones, asi que para comprobar que todo se encuentra en orden se usan sistemas de testing, para evitar errores.

Para HTML
Mocha, Karma
Para CSS
CytePress, Justmain
Para JS
Testing Library, Jasmine

5. Build Tools

Son herramientas o utilidades que nos permiten gestionar todas estas tareas de compilacion sin tener que configurar cada tecnología por separado.

Task Runner
Gulp, Grunt
Module Bundlers
WebPack, EsBuilt, SnowPack, Rollup_JS
Zero-Config
Create React APP, Parcel, Vite_JS, Svelte

6. Librerías

Para resolver problemas específicos como la interfaz web, una APP, gestionar datos o una API externa, se usan librerías. Básicamente es código desarrollado por otras personas que están a disposición del desarrollador.

Interfaz
AngularJS, ReactJS
Data Layers
Redux, Vue_JS,
HTTP
RxJS, Axios, Apollo Cliente, Transtack Query

6.1. Que es jQuery ?

Es una librería gratuita en JavaScript. Es decir agregar funciones avanzadas con el menor esfuerzo.

<Script type="text/javascript" src="jquery.min.js"></Script>

Ver aqui

6.2. Bootstrap

Es una librería para simplificar CSS. Desarrollado por Twitter. Descargar aqui

 
<Link rel=StyleSheet href=bootstrap.min.css>

Existen por definicion 4 tamaños de pantalla: small (sm),medium (md), large (lg) y extra large (xl).

<div class=conteiner>
   <div class=row>
      <div class=row-sd-12 row-lg-4>
      </div>
      <div class=row-sd-12 row-lg-4>
      </div>
      <div class=row-sd-12 row-lg-4>
      </div>
   </div>
</div>

7. Frameworks

Es un entorno de desarrollo o plataforma que muchas veces contienen librerias.

8. Backend

Son aplicaciones que se instala y ejecutan en el lado del servidor.

8.1 Que es Node.js ?

Es un entorno de ejecución para JavaScript del lado de servidor construido con el motor de JavaScript V8 de Chrome. Usa un modelo de operaciones E/S sin bloqueo y orientado a eventos, que lo hace liviano y eficiente. El ecosistema de paquetes de Node.js, npm, es el ecosistema mas grande de librerías de código abierto en el mundo.

La meta Node es "proporcionar una manera fácil para construir programas de red escalables". Cuál es el problema con los programas de servidor actuales ? En los lenguajes como Java y PHP, cada conexión genera un nuevo hilo que potencialmente viene acompañado de 2 MB de memoria. En un sistema que tiene 8 GB de RAM, esto da un número máximo teórico de conexiones concurrentes de cerca de 4.000 usuarios. A medida que crece su base de clientes, si usted desea que su aplicación soporte más usuarios, necesitará agregar más y más servidores. Desde luego, esto suma en cuanto a los costos de servidor del negocio, a los costos de tráfico, los costos laborales, y más. Además de estos costos están los costos por los problemas técnicos potenciales — un usuario puede estar usando diferentes servidores para cada solicitud, así que cualquier recurso compartido debe almacenarse en todos los servidores. Por todas estas razones, el cuello de botella en toda la arquitectura de aplicación Web (incluyendo el rendimiento del tráfico, la velocidad de procesador y la velocidad de memoria) era el número máximo de conexiones concurrentes que podía manejar un servidor.

Node.js resuelve este problema cambiando la forma en que se realiza una conexión con el servidor. En lugar de generar un nuevo hilo de OS para cada conexión (y de asignarle la memoria acompañante), cada conexión dispara una ejecución de evento dentro del proceso del motor de Node. Node.js también afirma que nunca se quedará en punto muerto, porque no se permiten bloqueos y porque no se bloquea directamente para llamados E/S. Node afirma que un servidor que lo ejecute puede soportar decenas de miles de conexiones concurrentes.

Node.js no es como Apache o Tomcat que de por si uno los instala y están listo. A Node.js hay que instalarle los módulos que Uds necesite.

8.2 CMS