- Notifications
You must be signed in to change notification settings - Fork230
First complete translation to article.md#2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
2 commits Select commitHold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
134 changes: 68 additions & 66 deletions1-js/01-getting-started/1-intro/article.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -1,120 +1,122 @@ | ||||||||
| #Una introducción a JavaScript | ||||||||
| Veamos que tiene de especialJavaScript,que podemos lograr con este lenguaje y que otras tecnologías se integran bien con él. | ||||||||
| ##¿Qué es JavaScript? | ||||||||
| _JavaScript_ Fue creado para _"dar vida a la páginas web"_. | ||||||||
| Los programas en este lenguaje son llamados _scripts_. Se pueden escribir directamente en el HTML de una páginaweby ejecutarse automáticamente a medida que se carga la página. | ||||||||
| Los scripts se proporcionan y ejecutan como texto plano. No necesitan preparación especial o compilación para correr. | ||||||||
| En este aspecto, JavaScriptes muy diferente de otro lenguaje llamado [Java](<https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)>). | ||||||||
| ```smart header="¿Por qué <u>Java</u>Script?" | ||||||||
| Cuando JavaScriptfue creado, inicialmente tenía otro nombre: "LiveScript".Pero Javaera muy popularen ese momento, así que se decidió que el posicionamiento de un nuevo lenguaje como un "Hermano menor" de Javaayudaría. | ||||||||
| Pero a medida que evolucionaba, JavaScriptse convirtió en un lenguaje completamente independiente con su propia especificación llamada[ECMAScript] (https://es.wikipedia.org/wiki/ECMAScript),y ahoranotiene para nada relación con Java. | ||||||||
| ``` | ||||||||
| Hoy, JavaScriptpuede ejecutarse no solo en los navegadores, sino también en servidores o incluso en cualquier dispositivo que cuente con un programa especial llamado [El motor o intérprete de JavaScript](https://es.wikipedia.org/wiki/Int%C3%A9rprete_de_JavaScript). | ||||||||
| El navegador tiene un motor embebido a veces llamado una "Máquina virtualde JavaScript". | ||||||||
| Diferentes motores tienen diferentes "nombres en clave".Por ejemplo: | ||||||||
| - [V8](https://es.wikipedia.org/wiki/Chrome_V8) --en Chromey Opera. | ||||||||
| - [SpiderMonkey](https://es.wikipedia.org/wiki/SpiderMonkey) --en Firefox. | ||||||||
| - ...Existen otros nombres en clave como"Trident" and "Chakra"para diferentes versiones de IE (Internet Explorer), "ChakraCore"para Microsoft Edge, "Nitro"y "SquirrelFish"para Safari, etc. | ||||||||
| Los términos anteriores es bueno recordarlos porque son usados en artículos para desarrolladores eninternet.También los usaremos. Por ejemplo, si "la característica Xes soportada por V8",entonces probablemente funciona enChromey Opera. | ||||||||
| ```smart header="¿Como trabajan los motores?" | ||||||||
| Los motores son complicados, pero los fundamentos son fáciles. | ||||||||
| 1.- El motor (embebido si es un navegador) lee ("analiza")el script. | ||||||||
| 2.- Entonces convierte ("compila")el scripta lenguaje máquina. | ||||||||
| 3.- y por último el código maquina se ejecuta muy rápido. | ||||||||
| El motor aplica optimizaciones en cada paso del proceso. Incluso observa como elscriptcompilado se ejecuta, analiza los datos que fluyen a través de él y aplica optimizaciones al código maquina basadas en ese conocimiento. Cuando está terminado, losscriptsse ejecutan bastante rápido. | ||||||||
| ``` | ||||||||
| ##¿Qué puede hacer JavaScripten el navegador? | ||||||||
| JavaScriptmoderno es un lenguaje de programación "seguro". No proporciona acceso de bajo nivel a la memoria o la CPU (UCP), ya que se creó inicialmente para los navegadores los cuales no lo requieren. | ||||||||
| Las capacidades de JavaScript dependen en gran medida en el entorno en que se ejecuta. Por ejemplo, [Node.JS(https://es.wikipedia.org/wiki/Node.js)Soporta funciones que permiten aJavaScriptleer y escribir archivos arbitrariamente, realizar solicitudes de red, etc. | ||||||||
| En el navegadorJavaScriptpuede realizar cualquier cosa relacionada con la manipulación de una página web, interacción con el usuario y el servidor web. | ||||||||
| Por ejemplo, en el navegadorJavaScriptes capaz de: | ||||||||
| -Agregar nuevo HTMLa la página, cambiar el contenido existente y modificar estilos. | ||||||||
| -Reaccionar a las acciones del usuario, ejecutarse con los clics del ratón, movimientos del puntero y al oprimir teclas. | ||||||||
| -Enviar solicitudes de red a servidores remotos, descargar y cargar archivos (Tecnologías llamadas[AJAX](https://es.wikipedia.org/wiki/AJAX) y [COMET](https://es.wikipedia.org/wiki/Comet)). | ||||||||
| -Obtener y configurar cookies,hacer preguntar al visitante y mostrar mensajes. | ||||||||
| -Recordar datos en el lado del cliente con el almacenamiento local ("local storage"). | ||||||||
| ##¿Qué no puede hacerJavaScripten el navegador? | ||||||||
| Las habilidades deJavaScript en el navegador están limitadas por el bien de la seguridad de usuario. El objetivo es prevenir el acceso de información privada o dañar los datos de usuario por parte de una página maliciosa. | ||||||||
| Ejemplos de tales restricciones incluyen: | ||||||||
| - JavaScripten el navegador no puede leer y escribir arbitrariamente archivos en el disco duro, copiarlos o ejecutar programas. No tiene acceso directo a funciones del Sistema operativo (OS). | ||||||||
| Los navegadores mas modernos le permiten trabajar con archivos, pero el acceso es limitado y solo permitido si el usuario realiza ciertas acciones, como "arrastrar" un archivo a la ventana del navegador o seleccionarlo por medio de una etiqueta`<input`>. | ||||||||
| Existen maneras de interactuar con la cámara, micrófono y otros dispositivos, pero eso requiere el permiso explicito del usuario. Por lo tanto, una página habilitada para JavaScript no puede habilitar una cámara web para observar el entorno y enviar la información a la [NSA](https://es.wikipedia.org/wiki/Agencia_de_Seguridad_Nacional). | ||||||||
| - Diferentes pestañas y ventanas generalmente no se conocen entre sí. A veces si lo hacen, por ejemplo, cuando una ventana usa JavaScriptpara abrir otra. Pero incluso en este caso, JavaScript no puede acceder a la otra si provienen de diferentes sitios. (De diferente dominio, protocolo o puerto). | ||||||||
| Esto es conocido como "política del mismo origen" ("Same Origin Policy"). Para evitar eso, ambas páginas deben contener código especial de JavaScript que permita manejar el intercambio de datos. | ||||||||
| Esta limitación es, de nuevo, para la seguridad del usuario. Una página de `http://anysite.com` la cual el usuario ha abierto no debe ser capaz de acceder a otra pestaña del navegador con la URL `http://gmail.com` y robar información de esta otra página. | ||||||||
| - JavaScript puede fácilmente comunicarse a través de la red con el servidor de donde esta página proviene. Pero su capacidad para recibir información de otros sitios y dominios esta bloqueada. Aunque sea posible, esto requiere un acuerdo explícito (expresado en los encabezados HTTP) desde el sitio remoto. Una vez más, esto es una limitación de seguridad. | ||||||||
|  | ||||||||
| Tales limitaciones no existen siJavaScriptes usado fuera del navegador, por ejemplo, en un servidor. Los navegadores modernos también permiten complementos y extensiones que pueden preguntar por permisos extendidos. | ||||||||
| ##¿Qué hace aJavaScriptúnico? | ||||||||
| Existen al menos _tres_ geniales cosas acerca de #"d5aaff13573595eb45eecd5dcb787272cd9205273276090897ef0d9753e74dae"> | ||||||||
| ```compare | ||||||||
| +Completa integración con HTML yCSS.. | ||||||||
| +Las cosas simples se hacen simplemente. | ||||||||
| +Soportado por la mayoría de los navegadores y habilitado por defecto. | ||||||||
| ``` | ||||||||
| JavaScriptes la única tecnología de los navegadores que combina estas tres cosas. | ||||||||
| Eso es lo que hace a JavaScript único. Eso es el porqué es la herramienta mas extendida para crear interfaces de navegador. | ||||||||
| Al planificar aprender una nueva tecnología, es beneficioso revisar sus perspectivas. Así que vamos a movernos a las tendencias modernas que lo afectan, incluyendo nuevos lenguajes y capacidades del navegador. | ||||||||
| ##Lenguajes "por arriba de" JavaScript | ||||||||
| La sintaxis de JavaScriptno se ajusta para las necesidades de todos. Personas diferentes quieren diferentes características. | ||||||||
| Eso es de esperarse, porque los proyectos y requerimientos son diferentes para cada persona. | ||||||||
| Así que recientemente a aparecido una abundancia de nuevos lenguajes, los cuales son _Convertidos_ / _Transpilados_ (transpiled) a JavaScriptantes de ser ejecutados en el navegador. | ||||||||
| Las herramientas modernas hacen la conversión (Transpilation) muy rápido y transparente, permitiendo a los desarrolladores codificar en otros lenguajes y convertirlo automáticamente detrás de escena. | ||||||||
| Ejemplos de tales lenguajes: | ||||||||
| - [CoffeeScript](http://coffeescript.org/)Es una "sintaxis azucarada" [syntactic sugar](https://es.wikipedia.org/wiki/Az%C3%BAcar_sint%C3%A1ctico) para JavaScript.Introduce una sintaxis corta, permitiéndonos escribir un código mas claro y preciso. Usualmente desarrolladores deRubyprefieren este lenguaje. | ||||||||
| - [TypeScript](http://www.typescriptlang.org/)se concentra en agregar "tipado estricto" ("strict data typing") para simplificar el desarrollo y soporte de sistemas complejos. Es desarrollado por Microsoft. | ||||||||
| - [Dart](https://www.dartlang.org/)es un lenguaje independiente que tiene su propio motor que corre en entornos que no son los navegadores (como aplicaciones móviles).Fue inicialmente ofrecido porGooglecomo un remplazo para JavaScript,pero a partir de ahora, los navegadores requieren que este sea convertido (transpiled) a JavaScriptigual que los anteriores. | ||||||||
| Hay mas. Por supuesto, incluso si nosotros usamos alguno de estos lenguajes, deberíamos conocer tambiénJavaScriptpara realmente entender que está pasando. | ||||||||
| ##Resumen | ||||||||
| - JavaScriptfue inicialmente creado como un lenguaje solo para el navegador, pero ahora es usado también en muchos otros entornos. | ||||||||
| -Hoy en día, JavaScripttiene una posición única como el lenguaje más extendido y adoptado de navegador, con una integración completa conHTML yCSS. | ||||||||
| -Existen muchos lenguajes que se convierten "transpiled"a JavaScripty aportan ciertas características. Es recomendable echarles un vistazo, al menos brevemente, después de dominar JavaScript. |
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.