Skip to content

Commit 0a52cb9

Browse files
authored
Merge pull request Eloquent-JavaScript-Espanol#19 from ajesusflores/master
Capítulo 13 - El navegador
2 parents 0f2d15b + 6a2f6db commit 0a52cb9

File tree

1 file changed

+320
-0
lines changed

1 file changed

+320
-0
lines changed

13_browser.md

Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
# JavaScript y el Navegador
2+
3+
{{quote {author: "Tim Berners-Lee", title: "The World Wide Web: A very short personal history", chapter: true}
4+
5+
El sueño detrás de la Web es el de un espacio común de información
6+
en el cual nos comunicamos compartiendo información.
7+
Su universalidad es esencial: el echo de que un enlace pueda apuntar a cualquier cosa,
8+
ya sea personal, local o global, ya sea un borrador o este muy pulido.
9+
10+
quote}}
11+
12+
{{index "Berners-Lee, Tim", "World Wide Web", HTTP, [JavaScript, "history of"], "World Wide Web"}}
13+
14+
{{figure {url: "img/chapter_picture_13.jpg", alt: "Picture of a telephone switchboard", chapter: "framed"}}}
15+
16+
Los próximos capítulos del libro hablarán del navegador web. Sin
17+
((navegador))es web, no existiría JavaScript. Incluso, si existieran,
18+
nadie le habría puesto atención.
19+
20+
{{index decentralization, compatibility}}
21+
22+
La tecnología web ha estado descentralizada desde el principio,
23+
no sólo técnicamente, también en la forma en que ha evolucionado.
24+
Distintos proveedores de nagevadores han agregado nueva funcionalidad
25+
adhoc y algunas veces ha sido de una forma deficiente, y entonces,
26+
termina siendo adoptada por otros-y finalmente es aceptada como
27+
((estándar)).
28+
29+
Esta es a la vez una bendición y una maldición. Por un lado, empodera el no tener
30+
un control central, sino que es mejorado por distintas partes trabajando
31+
en ((colaboración)) (o a veces hostilidad abierta). Por otro lado, la
32+
forma aleatoria en la que la web fue desarrollada significa que el sistema
33+
resultante no es exactamente un ejemplo de ((consistencia)) interna. Algunas
34+
partes son francamente confusas y pobremente concebidas.
35+
36+
## Redes e Internet
37+
38+
Las ((red))es de computadoras han existido de los 50s. Si pones cables
39+
entre dos o más computadoras y les permites enviar y recibir información
40+
a través de esos cables, puedes hacer todo tipo de cosas increíbles.
41+
42+
Y si conectar dos computadoras en el mismo edificio nos permite hacer
43+
cosas increíbles, conectar computadoras alrededor del mundo debería ser
44+
incluso mejor. La tecnología para iniciar la implementación de esta visión
45+
fue desarrollada en los 80s, y la red resultante es llamada _((Internet))_.
46+
Ha cumplido su promesa.
47+
48+
Una computadora puede usar esta red para mandar bits a otra computadora. Para
49+
cualquier ((comunicación)) efectiva, las computadoras en ambos lados deben
50+
saber qué se supone que representan los bits. El significado de cualquier
51+
secuencia de bits depende enteramente del tipo de cosas que se está tratando
52+
de expresar y del mecanismo de ((codificación)) utilizado.
53+
54+
{{index [network, protocol]}}
55+
56+
Un _((protocolo)) de red_ describe un estilo de comunicación sobre una ((red)).
57+
Hay protocolos para mandar correos electrónicos, para recibir correos electrónicos,
58+
para compartir archivos, e incluso para controlar computadoras que resultan estar
59+
infectadas por software malicioso.
60+
61+
{{indexsee "Hypertext Transfer Protocol", HTTP}}
62+
63+
Por ejemplo, el Protocolo de Transferencia de Hipertexto
64+
(((HTPP del inglés _Hypertext Transfer Protocol_))) es un protocolo
65+
para obtener ((recurso))s nombrados (fragmentos de información, como páginas web
66+
o imágenes). Especifica que el lado que hace la solicitud debe iniciar con
67+
una linea como esta, indicando el recurso y la versión del protocolo
68+
que se intenta usar:
69+
70+
```{lang: "text/plain"}
71+
GET /index.html HTTP/1.1
72+
```
73+
74+
Existen otras reglas acerca de cómo el solicitante puede incluir más
75+
información en la ((solicitud)) y la forma en qué el otro lado, que
76+
devuelve el recurso, empaca el contenido. Examinaremos HTTP en más detalle
77+
en el capítulo [Chapter ?](http).
78+
79+
{{index layering, stream, ordering}}
80+
81+
La mayoría de los protocolos están construidos sobre otros protocolos. HTTP
82+
utiliza la red como un dispositivo en el que pones bits y llegan a su destino
83+
correcto en el orden correcto. Como vimos en el capítulo [Chapter ?](async),
84+
asegurar eso ya es un problema muy complicado.
85+
86+
{{index TCP}}
87+
88+
{{indexsee "Transmission Control Protocol", TCP}}
89+
90+
El _Protocolo de Control de Transmisión_ (TCP del inglés Transmission
91+
Control Protocol) es un ((protocolo)) que se encarga de este problema.
92+
Todos los dispositivos conectados a internet lo "hablan", y la mayor
93+
parte de la comunicación en ((internet)) está construida encima de él.
94+
95+
{{index "listening (TCP)"}}
96+
97+
Una ((conexión)) TCP funciona así: un computadora debe estar esperando,
98+
o _escuchando_, a que otras computadoras inicien a hablarle. Para poder
99+
escuchar diferentes tipos comunicaciones a la vez en una sola computadora,
100+
cada oyente tiene un número (llamado ((_puerto_))) asociado a él. La
101+
mayoria de los ((protocolo))s especifican qué puerto deben usar por
102+
defecto. Por ejemplo, cuando queremos enviar un correo electrónico
103+
utilizando el protocolo ((SMTP)), la máquina a través de la cual la
104+
enviamos esté escuchando en el puerto 25.
105+
106+
Otra computadora pue establecer una ((conexion)) conectandose a la
107+
ocmputadora destino usando el puerto correcto. Si la computadora destino
108+
puede ser alcanzada y está escuchando en ee puerto, la conexión se
109+
crea de forma exitosa. La computadora oyente es llamada el _((servidor))_,
110+
y la computadora que se conecta es llamado el _((cliente))_.
111+
112+
{{index [abtraction, "of the network"]}}
113+
114+
Esa conexión actua como un una tubería de dos direcciones por la cual
115+
los bits pueden fluir, las computadoras en ambos extremos pueden poner
116+
información en esa tubería. Una vez que los bits son transmitidos de forma
117+
exitosa, pueden ser leidos nuevamente por la computadora en el otro lado.
118+
Este es un modelo conveniente. Podrías decir que ((TCP)) provee una
119+
abstracción de la red.
120+
121+
{{id web}}
122+
123+
## La Web
124+
125+
La ((Red Mundial)) (en inglés World Wide Web, no confundir con ((Internet)))
126+
es un conjunto de ((protocolo))s y formatos que nos permiten visitar
127+
páginas web en un navegador. La parte "Web" del nombre se refiere al
128+
hecho de que esas páginas pueden enlazarse fácilmente unas con otras,
129+
conectandose a una gran ((red)) a entre la cual los usuarios pueden
130+
moverse.
131+
132+
Para llegar a ser parte de la Web, todo lo que tienes que hacer es
133+
conectar una computadora a ((Internet)) y ponerla a escuchar en el
134+
puerto 80 con el protocolo ((HTTP)) para que otras computadoras puedan
135+
pedirle documentos.
136+
137+
{{index URL}}
138+
139+
{{indexsee "Uniform Resource Locator", URL}}
140+
141+
Cada ((documento)) en la Web es nombrado por un _Localizador Uniforme
142+
de Recursos_ (URL del inglés Uniform Resource Locator), y se ve así:
143+
144+
```{lang: null}
145+
http://eloquentjavascript.net/13_browser.html
146+
| | | |
147+
protocolo servidor ruta
148+
```
149+
150+
{{index HTTPS}}
151+
152+
La primera sección nos dice que ésta URL utiliza el ((protocolo)) HTTP
153+
(La versión ecriptada sería _https://_). Posteriormente sigue la sección
154+
que identifica a qué ((servidor)) estamos solicitado el documento. La
155+
última sección es una cadena de ruta que identifica el documento especifico
156+
(o _((recurso))_) que nos interesa.
157+
158+
Las computadoras conectadas a internet obtienen una _((dirección IP))_, que
159+
es un número que puede utilizado para enviar mensajes a esa computadora, ese
160+
número se ve así `149.210.142.219` o así `2001:4860:4860::8888`. Pero
161+
números casi aleatorios son dificiles de recordar y es raro para escribirlos,
162+
así que en lugar de eso puedes registrar un _nombre de ((dominio))_ para
163+
un una dirección específica o un conjunto de direcciones. Yo registré
164+
_eloquentjavascript.net_ para apuntar a una dirección IP de una computadora
165+
que controlo y así puedo usar ese nombre de dominio para entregar páginas
166+
web.
167+
168+
{{index browser}}
169+
170+
Si escribes esa URL en la ((barra de dirección)) del navegador, el navegador
171+
intentará obtener y mostrar el document en esa URL. Primero, el navegador
172+
tiene que encontrar la dirección a la que _eloquentjavascript.net_ se
173+
refiere. Entonces, utilizando el protocolo ((HTTP)), hará una conexión
174+
al servidor en esa dirección y solicitará el recurso _/13_browser.html_.
175+
Si todo sale bien, el servidor envía de vuelta un documento, que el
176+
navegador muestra en la pantalla.
177+
178+
## HTML
179+
180+
{{index HTML}}
181+
182+
{{indexsee "Hypertext Markup Language", HTML}}
183+
184+
HTML, que significa _Lenguaje de Marcado de Hipertexto_ (en inglés
185+
Hypertext Markup Language), es el formato de documento utilizado
186+
para páginas web. Un documento HTML contiene ((texto)), así como
187+
((etiqueta))s que dan estructura al texto, describiendo elementos
188+
como enlaces, párrafos y encabezados.
189+
190+
Un pequeño documento HTML puede verse así:
191+
192+
```{lang: "text/html"}
193+
<!doctype html>
194+
<html>
195+
<head>
196+
<title>Mi página de inicio</title>
197+
</head>
198+
<body>
199+
<h1>Mi página de inicio</h1>
200+
<p>Hola, mi nombre es Marijn y esta es mi página de inicio.</p>
201+
<p>También escribí un libro! Léelo
202+
<a href="http://eloquentjavascript.net">aquí</a>.</p>
203+
</body>
204+
</html>
205+
```
206+
207+
{{if book
208+
209+
Así es como el documento se vería en el navegador:
210+
211+
{{figure {url: "img/home-page.png", alt: "My home page",width: "6.3cm"}}}
212+
213+
if}}
214+
215+
{{index [HTML, notation]}}
216+
217+
Las etiquetas, encerradas entre ((paréntesis angulares)) (`<` y `>`,
218+
los símbolos para _Menor qué_ y _Mayor qué_), proveen información acerca
219+
de la ((estructura)) del documento. El otro ((texto)) es sólo texto
220+
plano.
221+
222+
{{index doctype, version}}
223+
224+
El documento inicia con `<!doctype html>`, eso le indica al navegador
225+
que interprete la página como HTML _moderno_, no como distintos lenguajes
226+
que fueron utilizados en el pasado.
227+
228+
{{index "head (HTML tag)", "body (HTML tag)", "title (HTML tag)", "h1 (HTML tag)", "p (HTML tag)"}}
229+
230+
231+
Los documentos HTML tienen un encabezado y un cuerpo. El encabezado
232+
contiene información _acerca del_ documento, y el cuerpo contiene
233+
el documento en sí. En este caso, el encabezado declara que el título
234+
del documento es "Mi página de inicio" y que está utilizando la
235+
codificación UTF-8, que es una forma de codificar texto Unicode como
236+
información binaria. El cuerpo del documento contiene un encabezado
237+
(`<h1>`, que significa "encabezado 1", `<h2>` a `<h6>` produce
238+
sub-encabezados) y dos ((párrafo))s (`<p>`).
239+
240+
{{index "href attribute", "a (HTML tag)"}}
241+
242+
Las etiquetas vienen en distintas formas. Algunos ((elemento))s, como el cuerpo,
243+
un párrafo, o un enlace, se inicia por una _((etiqueta de apertura))_ como
244+
`<p>` y finaliza con una _((etiqueta de cierre))_ como `</p>`. Algunas
245+
etiquetas de apertura, como la utilizada para los enlaces, (`<a>`),
246+
contienen información extra en forma de pares `name="value"`. Estos
247+
se llaman _((atributos))_. En este caso, el destino del enlace
248+
está indicado con `href="http://eloquentjavascript.net"`, donde
249+
`href` significa "referencia de hipertexto".
250+
251+
{{index "src attribute", "self-closing tag", "img (HTML tag)"}}
252+
253+
Algunos tipos de ((etiqueta))s no encierran nada, y por lo tanto no
254+
necesitan ser cerradas. La etiqueta meta `<meta charset="utf-8">`
255+
es un ejemplo de esto.
256+
257+
{{index [escaping, "in HTML"]}}
258+
259+
Para poder incluir paréntesis angulares en el texto de un documento,
260+
aunque tengan un significado especial en HTML, otra forma de notación
261+
especial tiene que ser introducida. Un paréntesis angular de apertura
262+
es escrito como `&lt;` (menor qué del inglés less than), y un
263+
paréntesis angular de cierre es escrito como `&gt;` (mayor qué del
264+
inglés greater than). En HTML, un ampersand (`&`) seguido por un nombre
265+
o código de caracter, y un punto y coma (`;`) es llamado una _((entidad))_
266+
y será reemplazada por el caracter que codifica.
267+
268+
{{index ["backslash character", "in strings"], "ampersand character", "double-quote character"}}
269+
270+
Esto es análogo a la forma en que las diagonales invertidas son
271+
utilizadas en las cadenas en JavaScript. Ya que este mecanismo le
272+
da a los carácteres ampersand un significado especial, también,
273+
tienen que ser escapadas como `&amp;`. Dentro de los valores de los
274+
atributos, que son encerrados en comillas dobles, `&quot;` pueden ser
275+
utilizados para insertar un carácter de comillas.
276+
277+
{{index "error tolerance", parsing}}
278+
279+
HTML es analizado en una forma tolerante a errores. Cuando las etiquetas
280+
que deberían estar ahí no están, el navegador las reconstruye. La forma
281+
en que esto se realiza está estandarizado, y puedes confiar en que
282+
todos los navegadores modernos lo realizarán de la misma manera.
283+
284+
El siguiente documento será tratado identicamente al mostrado anteriormente:
285+
286+
```{lang: "text/html"}
287+
<!doctype html>
288+
289+
<meta charset=utf-8>
290+
<title>Mi página de inicios</title>
291+
292+
<h1>Mi página de inicio</h1>
293+
<p>Hola, mi nombre es Marijn y esta es mi página de inicio.
294+
<p>También escribí un libro! Léelo
295+
<a href=http://eloquentjavascript.net>aquí</a>.
296+
```
297+
298+
{{index "title (HTML tag)", "head (HTML tag)", "body (HTML tag)", "html (HTML tag)"}}
299+
300+
Las etiquetas `<html>`, `<head>` y `<body>` fueron removidas completamente.
301+
El navegador sabe que `<meta>` y `<title>` pertenecen al encabezado y
302+
`<h1>` significa que el cuerpo del documento ha iniciado. Además,
303+
los párrafos no se están cerrando explícitamente ya que el abrir un
304+
nuevo párrafo o finalizar el documento los cierra implicitamente.
305+
Las comillas alrededor de los valores de los atributos tampoco están.
306+
307+
Este libro generalmente omitirá las etiquetas `<html>`, `<head>` y `<body>`
308+
de los ejemplos para mantenerlos cortos. Pero cerraré etiquetas e incluiré
309+
comillas alrededor de los atributos.
310+
311+
{{index browser}}
312+
313+
Usualmente omitiré las declaraciones ((doctype)) y `charset`. Eso
314+
no significa que tu tienes que hacer lo mismo. Los navegadores
315+
puede llegar a hacer cosas ridiculas cuando las omites. Siempre
316+
considera que las declaraciones ((doctype)) y `charset` están ahí
317+
implicitamente en los ejemplos, incluso cuando no se muestran en el
318+
texto.
319+
320+
{{id script_tag}}

0 commit comments

Comments
 (0)