>> Muy bien, así que estamos de vuelta, un par de goles de hoy,
vamos a recoger donde lo dejamos la última vez,
Recordamos que estábamos haciendo de esta sucesión
de las aplicaciones relacionadas con el servidor, super simple pero utilizando nodo JS
y luego también más recientemente usando toque expreso AS
y lo que se expresó el JS análogo en el mundo PHP.
Así que expreso es más ... de cerca,
por lo que expreso es esencialmente el Marco MBC que es bastante
popular en el mundo js nodo,
Estantería de libros que ya veremos hoy a través de Tim es un análogo
del elocuente que es un ORM en una relación objetal mapper
que en realidad hace que sea más fácil para evitar que el código SQL de bajo nivel
y en realidad expresar las relaciones entre los diversos objetos.
Así que una de las más frías cosas con honestidad
sobre js nodo es lo fácilmente se presta
para hacer aplicaciones en tiempo real, cosas como servidores de chat
o servidores de mensajería, cualquier cosa que ustedes usan ahora
como Google ... G-chat o Google hangout
o actualizaciones de estado de Facebook o incluso si usted es Twitter
en su página web todo es una especie de tiempo real
o si la da ilusión de tiempo real
y eso es realmente un dolor en el cuello que ver con algo
como PHP y My SQL justo lo que nos proponemos
el lunes sería el medio
por el cual se podría poner en práctica el ilusión de comportamiento en tiempo real
con un servidor de chat en PHP, ¿qué tengo que hacer?
Alice envía un mensaje, golpea entrar ¿a dónde va?
Sí.
>> [Sección Inaudible]
>> En una base de datos y luego ¿qué hace el navegador del Bob tiene
que hacer para ver en realidad Alice lo ha dicho, ¿no?
>> [Sección Inaudible]
>> Sigue sondeo de la base de datos, derecho, por lo que una petición ajax tiene
para disparar cada segundo, cada pocos segundo o hablamos brevemente
pero no se veía a un ejemplo de algo que se llama tiempo de votación,
nadie recuerda cómo
ese mecanismo ... en un alto nivel trabaja?
>> [Sección Inaudible]
>> Exactamente, sí por lo que un navegador todavía hace una petición ajax
a un servidor, a un punto foo php pero con una c dot php sólo parece
para pasar el rato, se asienta esencialmente en un bucle while para tanto
como 30 segundos y normalmente sólo una vez que el archivo php punto foo
se da cuenta de oh hay una nueva fila
en la base de datos hace que en realidad responder
con un responden HTTP.
Así que usted piensa que esto podría de lo contrario colgar el servidor
y lo hace hasta cierto punto
pero significa que hay mucho menos sobrecarga
porque usted no necesita un nuevo tcp conexión, una nueva conexión HTP
para solicitar realidad datos desde el servidor.
Pero js nodo viene con una muy biblioteca popular llamada socket
dot io que usted podría nunca utilizado está construido en la parte superior
de una tecnología llamada web zócalo que está presente
en los navegadores más modernos y lo toma io que hace es que permite
para crear esencialmente una conexión persistente
entre el navegador y el servidor eso es muy baja sobrecarga
por lo que no necesariamente tienen los mismos problemas de escala
que es posible que si usted es constantemente golpeando el servidor
en el mundo de PHP y mi SQL y similares.
Incluso para los navegadores más antiguos
que no son compatibles con socket web esta biblioteca socket punto io puede
recurrir a los flashes aplicación de tomas
y tomas de corriente es una red cosa de CS143 por ejemplo.
O incluso puede caer de nuevo en la larga sondeo en sí de modo que implementan
el mismo tipo de trabajo
alrededor para efectivamente a su cargo la ilusión de que la conexión.
Así que toma [inaudible] io y esto es en la forma
de una biblioteca de scripts de java, esencialmente si lo usa
en la forma de un nodo de JS aplicación que no sólo instala
como un paquete con algo como mecanismo nacional de prevención que usamos el lunes
y o también incluye un despojar tag en en su archivo HTML
que dice que el uso de la Biblioteca del lado del cliente.
Así que hay dos mitades a y lo que hemos hecho aquí
en la cuarta iteración de la secuencia del lunes
de ejemplos es la siguiente.
Así que esta estructura de archivos es una reminiscencia de un conjunto muy común
para js y expresadas por suerte, es la forma más simple
que lervo [fonético] fue, recordar al configurar
hasta lervo que tienes un enorme desagradable volcado de una gran cantidad de archivos,
directorios lib vendedor, y muy peso pesado en comparación con esto.
Ahora para ser justos hemos despojado elimina aquello que es más o menos un
distracción, pero todo el cosas jugosas es realmente
en módulos de nodo.
Sólo para dar un gusto si miramos
en módulos de nodos que hay dos módulos o bibliotecas
que he descargado, este sería el equivalente
del directorio de proveedores, una se llama expreso que es
como larevel pero en el nodo
y el zócalo io el que acabo de mencionar.
Así que estos existen para que podamos hacer lo siguiente si abro
hasta digamos html a punto índice, primero vamos a mirar en el html,
esto va a componer este cuerpo, mi súper,
super simple servidor de chat.
Así que hay al parecer un ul con una idea única de mensajes
y ahí es donde Li uno a la vez,
todos los mensajes instantáneos son va a aparecer entre Alice
y Bob y luego hay un sencillo formulario con un campo de texto
y un botón de envío por el que Alice
o Bob puede en realidad mensaje de uno al otro.
De modo que el efecto neto si Dirijo esta aplicación
haciendo nodo de aplicación espacial de puntos js, si tiro un par
de las ventanas del navegador es que Alice podría estar a la derecha,
Bob podría ser en la izquierda y sólo
tener claro que no hay magia aquí tengo una ventana
en incógnito para que no haya intercambio de galletas o cualquier cosa
así, estos son dos usuarios distintos.
Yo debería ser capaz de tener Alice saludar Bob, haga clic en Enviar
y ahora que se ve a la izquierda que el mensaje de Alice fue enviado
y casi instantáneamente a la derecha.
No de votación aparentemente implicados, Bob recibido el mismo mensaje.
Ahora Bob dice oye decir Alice que vea el efecto contrario.
Entonces, ¿qué está pasando en realidad, ¿cómo tanto código qué necesitamos para escribir
para implementar este un servidor de chat
que ahora se puede extrapolar mentalmente que todo el mundo
en esta sala si este no estaban en mi [inaudible]
pero en foo punto com todos podríamos empezar a chatear instantáneamente
uno con el otro.
Así que lo que está involucrado y antes de que borrar esta pantalla es esta
se acaba de puerto IO de ser un poco ruidoso, es la impresión sólo
información sobre depuración a la pantalla,
no hay realmente nada más que hacer allí.
Así que permítanme abro js punto de aplicaciones, por lo que como antes tenemos algunas cosas
en la parte superior del archivo.
Un montón de requisitos, por lo que estos son como bibliotecas
o afilar pistas o requerir onces cualquier modelo mental que
desea tener y sólo para recapitular FS se utiliza
para qué tipo de funcionalidad?
Así que el sistema de archivos lo que la lectura de archivos potencialmente, y cosas por el estilo
y yo uso esto en una colocar como se verá,
expreso, por supuesto, es esta marco en el que estamos utilizando,
que no es estrictamente necesario que pudimos
como el lunes totalmente crear nuestro propio servidor http desde cero
haciendo crear servidor y todos los de ese tipo de código de antes
pero como veremos esto hace las cosas un poco más fácil
porque todo lo que tengo que hacer es en la línea 3 aquí instanciar
y expresar objeto, voy a llamar que la aplicación, un tanto arbitrariamente,
Yo entonces dije que la aplicación escuchar en el puerto 1337 de forma arbitraria,
que podría ser 80 por convención
y luego, por último, tengo un nuevo línea de hoy que ya es decir
para requerir la toma biblioteca io y luego
este enfoque de la cadena sería este operador punto sólo soy
llamando a una lección escucha eso es esencialmente diciendo la toma
biblioteca io también escuchar esa mismo servidor
o Web conexiones de socket.
¿Y ahora qué, ¿y qué es esta haciendo, estas cuatro líneas
de código con el que debe buscar una reminiscencia de larevel,
¿qué representa esto?
>> [Sección Inaudible]
>> Esta es una ruta ..., sólo una ruta por lo que en js punto de aplicaciones,
aka js de puntos dependiendo del servidor en lo que la gente quiere llamarlo
en sus propias aplicaciones usted tiene una convención
de hacer la definición de sus rutas,
significa app Obtén puntos cada vez que reciba una solicitud para llegar a ir
a para recortar literalmente seguir adelante y llamar a esta función anónima
y la función anónima en este caso lleva por requerimiento
o petición y una respuesta, potencialmente algunas otras cosas
pero mínimamente estos dos.
La solicitud le da acceso a cosas como parámetros http
y las cabeceras y otros cosas jugosas
y luego la respuesta es el mecanismo
por el cual se puede responder al usuario.
Así que esto es súper simple, incluso aunque no hemos visto todo lo
mismo código de la última vez, yo soy utilizando los módulos del sistema de archivos,
crear el método corriente de lectura que esencialmente hace que,
crear un flujo de lectura que significa esencialmente comenzar sorber
los bytes del punto índice html tan eficientemente como sea posible
sin que sea necesario esperar hasta que tu leer todo el archivo
y como se hace eso tubería de manera literal
en el sentido de barra vertical si se siente cómodo
con la línea de comandos de Linux,
tubería a la respuesta del objeto.
Así que hubo dos ejemplos en relación con las corrientes del lunes,
sólo nos fijamos en uno, sino le invitamos a mirar hacia atrás
en o corriente y la corriente 1.
Flujo 1 ... 0 hicieron algo similar a esto,
corriente 1 hizo algo casi exactamente igual que este,
esto es sólo una mancha un trazador de líneas de decir especie
de sorber algo por aquí y luego empezar a enviar desde aquí
al mismo tiempo, sin haciendo una masa de acuerdo
y luego a la derecha masiva,
este enfoque es generalmente más eficiente.
Así que eso es algo de lo viejo incluso si era nuevo el lunes,
esto es todo lo que se necesita para implementar un servidor de chat
con JS de nodo y más socket específicamente dot io.
Entonces, ¿cómo funciona esto, déjame muevo un poco,
así io es solo una variable que se refiere
al módulo nos requerida anteriormente,
toma de puntos es sólo un propiedad dentro de ella
eso me da socket funcionalidad relacionada
On es un método común que se refiere a lo que la noción general?
Un evento así sucesivamente escuchar alias en algunas bibliotecas sólo significa
al oír este evento que se llama conexión
y ahora usted sabe que esto sólo desde mirando a la documentación,
quien escribió la biblioteca define un evento llamado
la conexión que hace lo que su pensaría
cuando Alice o Bob conecta.
Seguir adelante y llamar a este función anónima toma fallecimiento
en un argumento del cliente que al parecer es una especie
del objeto que representa Conexión de Alice
o la conexión de Bob o Charlie o cualquier otra persona
y ahora hacemos lo siguiente.
Le decimos al cliente después de él o ella está conectado
para escuchar específicamente
para un mensaje que es completamente arbitrariamente llamada mensaje
cliente de colon.
Esto es algo que Tim y Se me ocurrió, podría ser foo
o en el bar, que es sólo un poco de cadena única que necesitábamos
para decidir como los desarrolladores.
Cada vez que Alice o Bob oye
que este evento anónimo función debe ser llamada
y los datos, la contenido de Alicia de
o mensaje de Bob debe ser pasado a este controlador de eventos
y ahora lo que debe el cliente bien que pueda especie
de leer esto bastante intuitiva el cliente debe transmitir,
también conocida como emiten un mensaje denominado servidor de métodos
significando con ello este mensaje que viene desde el servidor no
desde el navegador y lo sería que el mensaje ser,
al parecer es la carga útil de lo que surgiera de los clientes
y sólo vamos a arbitrariamente llamarlo mensaje.
Así que mucho de esto es arbitrario
a través de nombres razonable convenciones, Tim y yo vinimos
con, en su mayoría Tim y luego simplemente están creando en última instancia, una
servidor que hace lo que el chat, cuando Alice envía un mensaje
y éxitos entran qué evento aparentemente es despedido,
sólo para recapitular.
Tipos de Alicia un mensaje, golpes entrar, un cliente de mensajería es despedido,
este código oye eso y ahora el servidor transmite lo que,
¿cuál es el resultado final de esta realidad?
Alice envía el mensaje ahora el servidor vuelve a difundir
eficazmente a todos, excepto para Alice, ¿por qué todo el mundo menos
por Alice si usted acaba de ver
en el cliente documentación dot dot emisión admitir,
literalmente hace eso, transmite el mensaje
para todos excepto para el cliente que le envió
que el mensaje más reciente.
Así que esto es por lo que sólo ver que una vez en cada lado,
usted no ve que Alice y Bob consigue el mensaje de Alice.
Así que eso es todo, este es un agente de retransmisión
si se quiere que la simplemente tomar en los mensajes
y la retransmisión a cabo
y es notablemente escalable Quiero decir, incluso
con una super simple servidor y unas pocas líneas
de código ciertamente se podría manejar cientos si no miles
de mensajes simples concurrentes ir y venir como éste
y sólo imaginar la complejidad ahora de hacer esto en PHD
o Larevel o mi SQL y la cantidad de código que tendría
escribir con el fin de en realidad lograr eso.
Ahora para ser justos esta No es correcto persistente
si el servidor se cae perdemos toda la historia
así que no es un buen traducción perfecta pero es
que directa.
Echemos un vistazo a la secuencia de comandos de Java código pasamos por alto anteriormente,
esta es Alice y Cliente de Bob,
la página web que están usando ahora vamos a ver aquí por un momento.
Hay un poco más de código
pero es prácticamente sólo jQuery aquí, así que aviso
que en la página web que saqué
hasta hace un momento en que incluir la librería jQuery,
la toma de corriente io biblioteca y como una cuenta a un lado la diferencia
aquí, slash slash en el inicio de un camino
como esto significa qué es exactamente,
¿dónde está jQuery dot js en qué servidor?
Sí.
>> [Sección Inaudible]
>> Es en el Internet sí literalmente, llamado punto de código jQuery
punto com ¿por qué recortar, recortar, ¿por qué no acaba de un tajo,
¿dónde está el http o el colon, ¿qué significa esto, en general,
si Slash Slash en el principio de la URL?
Es realmente útil.
Bueno por lo que lo que es, obviamente, falta http ahora si razonamos
a través de este lógicamente, normalmente no es necesario
mencionar los nombres de servidores derecho
como si sólo tiene que utilizar slash jQuery js punto lo que se asume
por el navegador?
Que el archivo se encuentra en la misma servidor para continuar con ese tipo
de la lógica, si no se lo dices que lo que lo que es el protocolo
navegador asuma, por lo mismo protocolo si alguna vez has visitado sitios web
Eso le da un error a lo largo de las líneas de contenido no seguro
en esta página es porque alguien ha codificado un http
slash slash de colon URL para un imagen o un archivo de script de Java
o un archivo CSS, algo así en el código fuente de la página
pero la propia página en el URL navegadores es http s.
Así que esto es sólo el poco más de fantasía
de decir que no sé lo que el protocolo es
que estos usuarios finales va a utilizar
pero sólo asegúrese de que partidos de manera que el cromo
y otros navegadores no gritar en el usuario.
La única pega es el personas habían jQuery mejor establecer
https para arriba en su servidor.
Así que en realidad son la inclusión en el 443.
Muy bien por su parte esta de aquí esto es una especie
de slash engañosa io socket sugiere
que hay un directorio llamado io punto socket en mi servidor
pero no hay si nos asomamos
todo está el el directorio del módulo de nodo
pero no hay nada público acerca de esto,
cuando configuramos io socket para escuchar en los mismos puertos,
1337, fundamentalmente, que la biblioteca que alguien más escribió es va
para insertar especie de algo de código en el entorno de los js de nodos
y simplemente escuchar a este camino.
Esa biblioteca tiene sólo configurado una ruta para esto,
no es un directorio real.
Sería en un ubicación estándar.
Bueno por lo que ahora el interesante parte,
así que cuando el documento es preparado como se indica
por esta jQuery construir, primero voy a seguir adelante
y conectarse a una toma de corriente,
lo toma con sólo mantenerlo ... sencillo Voy a conectar
recortar, eso es donde está el usuario,
He mantenido el ejemplo sencillo sólo vamos a conectar
a la misma URL exacta que la usuario ha visitado luego voy
hacer lo siguiente, voy indicarle al navegador de Alice o Bob
para escuchar la mensaje desde el servidor.
De nuevo, esto podría haber sido foo
o prohibir cualquier momento escuchar un mensaje
de los datos que el servidor de llamadas y luego hacer el código jQuery
que supongo que la mayoría, si no todo el mundo está familiarizado
con estos días pero esencialmente un pin a la lista artículo
a la UL existente que se llamó mensajes
que dice, literalmente, cualquiera que sea la carga útil es
del mensaje de chat seguido por un guión, seguido por recibir,
seguido de un espacio y luego un tiempo de actualización y por eso
tener claro si nos remontamos
para esto usted consigue estos adicionales balas y otra vez
y de nuevo con los tiempos de la fecha.
Mientras tanto, si miramos aquí sólo tenemos
para manejar el envío del formulario por lo que fue la receptora
de un mensaje instantáneo, aquí está el envío y esto es una especie
de no relacionado con js nodo, escuchar a las formas presentar evento.
Cuando sucede evitar un impago, esto sólo significa que no lo presente
para el servidor en el habitual manera, volver a cargar toda la página,
queremos hacer todo esto a través de ajax.
He aquí sólo algunos códigos jQuery
para conseguir realmente la entrada cuyo tipo es el mensaje,
cuyo nombre es el mensaje que adelante
y obtener su valor a continuación, seguir adelante
y si usted realmente tiene un mensaje, si Alice y Bob
o Bob en realidad algunos tipos ninguno 0 número pulsaciones del teclado emiten
en la toma de un mensaje de llamada cliente de mensajería con el que la carga útil
y luego aquí se trata de lo que lo convierte en verde en lugar
al rojo, simplemente la salida lado del aparato [inaudible].
Así que es eso, pero todos esto es sólo la puesta a punto,
las cosas de verdad nuevo lo haría argumentar es sólo estos tres
o cinco líneas de código aquí y ese tipo de consejos en el poder
js de nodos y con ella esta biblioteca particular.
Así que vamos a echar un rápido mira de punto expresas js,
así que lo que voy a tratar de hacer en la pareja restante
de minutos aquí es configurar una pocas idea, algunas técnicas
que habrá que esperar un par minutos de descanso, Tim establecerá
y luego vamos a bucear más profundo
a un más interesante expresar aplicación y también
tipo estantería, la biblioteca la Tim realmente escribió
para la comunidad de código abierto
eso nos da luz elocuente funcionalidad con mi SQL
y transacciones y otros tales características y que también va a bucear
en un poco más a la mismo script lenguaje Java,
cómo su objeto o no de clases modelo funciona de otro modo sabe
como un modelo prototipo, un poco más en que para venir.
Así que echemos un vistazo a dos última aplicaciones aquí, servidor de cinco
y el servidor 6 que están todos especie de espíritu similar,
estos no son servidores de chat pero utilizan expresa.
Así que echemos un vistazo a lo que esto hace en realidad,
Voy a seguir adelante y abierta ... Yo voy a correr esta aplicación
con js app nodo, voy a volver a mi navegador y vuelva a cargar
y esto es aparentemente todo este servidor está haciendo,
se trata de un servidor super simple eso es al parecer una búsqueda
motor por lo que si escribo en foo y presentar, no hay resultados de la búsqueda
para comida, no me puedo mover a la aplicación de la sofisticada
parte final, todo se va
hacer es echo, no importa lo que escribe no hay resultados para comida,
no hay resultados para bar así que ¿cómo lo hacemos
porque hay una piezas de pareja, uno,
claramente hay algunos insumos que se prestan
al no servidor Larevel por supuesto, pero js nodo ahora
por lo que necesitamos de alguna manera llegar a ese parámetro Q,
que estamos haciendo con claridad algún tipo de vista aquí,
estamos haciendo una vista de modo tal vez hay una oportunidad
de plantillas o variables interprelation [fonético]
así que vamos a echar un vistazo en el siguiente.
En js app para este particular, servidor esto es todo lo que tenemos.
Uno requerimos expresar sí, dos el módulo de trayectoria
que sólo hace algunos cosas útiles
como unirse a cadenas juntos y así sucesivamente para mí,
Escucho en el puerto 1337 y ahora esto es nuevo, así que resulta
que expreso como Larevel soporta diferentes plug-ins
y tecnologías y otras cosas y uno
de las tecnologías que se puede conectar un motor de vista
que sólo significa lo de plantillas motor quieres usar,
Larevel tenía su propia cosa, pero se puede conectar
en diferentes cosas, diferentes marcos P melocotón tienen
diferentes formas de las plantillas, ejs es sólo una común
y un motor bastante simple que sólo vamos a hacer las cosas
al igual que las llaves que que tenía en la sintaxis Larevels
para la sustitución de las variables,
que es un poco diferente sintácticamente es todo.
Así que ahora hay una cosa llamada middle ware así como se verá
en su propio equipo nodo del proyecto de un middle ware es sólo un poco de código
o bibliotecas que se inyecte
en el [inaudible] Respuesta ciclo de vida de una aplicación,
en otras palabras, estos dos líneas están diciendo expreso
para hacer algún trabajo extra entre el tiempo que se recibe una petición
y entre el tiempo que se envía esa solicitud a su propia ruta,
el código que has escrito.
Así, en particular, esta línea aquí utilizar dot expreso estática y todo
de esta complejidad esto sólo significa que si usted ve una solicitud
que viene en un archivo estático como jif punto foo foo o punto css
o un punto foo no js por lo que un ruta generada dinámicamente,
seguir adelante y asuma que vive en el subdirectorio pública,
eso es todo lo que está haciendo.
Es algo así como la cartografía en Larevel, todo a su web
o en su directorio público más bien en Larevel.
La siguiente línea es sólo diciendo que quiero usar rutas,
Quiero usar cosas como aplicación dot obtener
que vimos hace un momento y ya veremos en un segundo momento.
Dot Así app Obtén medios escuchar para esta ruta,
slash cuando lo consigues llamar a este función anónima que toma
en una solicitud y un respuesta y ahora sólo
como Larevel usted tiene una manera de hacer una plantilla,
respuesta dot render, citar índice fin de la cita,
render es una plantilla llamado índice,
eso es todo lo que vamos a suspender a ese hilo para sólo una mirada momento
en el contenido de el directorio vistas
y observe esto también es super simple por ahora,
hay índices ejs punto y la búsqueda de puntos ejs,
Obviamente quiero que la primera
porque esa es la que acabo de cansado de hacer y vamos a ver
en el índice de visitas ejs punto más realidad enteramente HTML
en este momento, no hay en realidad no hay plantillas pasando.
Así que técnicamente no lo hice incluso necesidad de llamarlo ejs,
No necesito que la funcionalidad pero lo mantuve uniforme,
así que eso es todo, eso es lo que me da esa forma super simple.
Así que sólo hay otra vía, si miramos aquí he dicho
que esto es lo que se encarga de obtener slash búsqueda para el tipo real
de Google como el controlador para el Formulario de envío, cuando llegue
ese camino llamar a este función anónima
y hacer que la plantilla llamada de búsqueda
y lo que es la segunda argumento presumiblemente significa.
Se ve como un objeto json de tipo u objeto de script de Java.
¿Cuál es el papel de ese segundo argumento presumiblemente?
>> [Sección Inaudible]
>> La consulta real que la escrito en el usuario vive aparentemente
en la solicitud de consulta de puntos, consulta refiriéndose a todo lo
después del punto del signo de interrogación Q que es el nombre arbitraria
que yo le di al igual que Google
y mientras tanto q colon es sólo diciendo pasan a la plantilla,
ejs búsqueda de puntos, un clave de q y un valor
de la real lo q valor fue.
Así que deja sólo una archivo de interés a las opiniones,
ejs búsqueda de puntos que guardé esta super simple también,
Es más que nada, excepto HTML para una línea bastante notable
que es esta sintaxis aquí que se parece a un montón
de diferentes plantillas motores esto sólo significa enchufe
en el valor de q y ponerlo en negrita.
Así que no hay verdadera búsqueda funcionalidad, pero sí tipo
de sugerir cómo lo haría estructurar un esqueleto
de una aplicación así.
Mientras tanto ... en realidad yo puede mostrar una cosa más,
cuenta de que tengo algunas html aquí para css
y los archivos de script de Java, no hay nada en los archivos
en el momento de notar que hay un directorio público
como dije al principio de archivos estáticos por lo que si me voy
allí hay mi directorio css,
si voy allí Hay estilos dot css
y no hay ningún contenido allí
pero esa es la forma en que lo haría tener archivos públicos accesibles.
Muy bien vamos a echar un vistazo en otra variante aquí
y luego vamos a introducir una idea y descanso.
Así que este es el último servidor de 6, por lo que esto es casi idénticos excepto
para las dos líneas inferiores que tener este aspecto.
Así que en realidad hay una tercera línea que es diferente
pero me he escondido ... así que me dejó de nuevo ligeramente por lo que quiere a alguien
proponer lo que está pasando aquí en términos sencillos
o términos técnicos ¿Qué hay diferente en esta versión
con respecto a los líneas en los nodos superiores.
¿Qué tengo yo presumiblemente hecho aquí y por qué?
Sí, Sharon.
>> [Sección Inaudible]
>> Sí que parece que tengo Índice movido y búsqueda
así que aparte directa o algo así, Los he eliminado casi
y eso es por lo que al igual que en Larevel se puede poner todo
de la lógica del controlador dentro de las rutas salpican php
con funciones anónimas una y otra vez y otra vez
pero ese archivo de curso puede ser bastante masiva
por lo que en las rutas dot php lo que más
de que ustedes han estado haciendo es que usted haya especificado el nombre
de una clase de controlador o incluso el nombre de un método
que debe recibir llamada
por lo que la misma idea aquí, incluso aunque la sintaxis es un poco
diferente por lo que aquí notificación
que tengo al parecer implementado mis propias js nodo
módulo y un módulo es sólo un Archivo de script de Java que se adhiere
a esencialmente una convención que veremos en un momento.
Así que asumir que todos los de mi funcionalidad para el índice
y para la búsqueda de tener aparentemente ha puesto en este directorio
y ahora estoy llamando a que todo módulo o paquete o biblioteca,
lo que quieras a pensar en ella como,
como rutas una variable llamado rutas.
Así que al parecer en allí rutas Índice de puntos es un método llamado
índice y al parecer no hay otro método llamado de búsqueda
en estos módulos de rutas o biblioteca
y sólo estoy encaminamiento sólo para que yo no pongo todo
de mi código anónimo dentro de mi app.
Así que vamos a entrar en las rutas notice sólo hay índice js punto
y si me veo aquí es la convención me refería anteriormente
así que esto es bastante arbitraria pero es la convención de nodo.
Cada vez que se implemente su propia biblioteca js nodo,
también conocido como módulo que esencialmente puede escribir ningún código script de Java que
desear en este archivo, se ser arena muy limpia en caja
de manera que cualquier variable le elegir no chocarán
con la biblioteca de cualquier otra persona, variables o métodos o nada
así, pero nada desea exponer
al mundo exterior un ala método público en escritura Java
o php o en otros idiomas usted tiene que plop en el interior
de un objeto global que el autor del nodo llamado exportaciones.
Así que haciendo las exportaciones dot índice de lo que estoy exponiendo a los usuarios
de este módulo un método llamado índice que se asigna a esta función
por lo que es anónimo en el lado derecho
pero estoy efectivamente dándole un nombre en el lado izquierdo
y exportar al mundo
de modo que usted puede llamar Índice de puntos o la búsqueda de puntos.
Así que para estar claro si yo también tenía algo así como la función foo
aquí que hicieron algo
que la función haría absolutamente en funcionamiento,
podría ser llamado en este archivo pero nadie
en el mundo exterior fría jamás llaman foo
porque no se ha exportado a través de esta notación de puntos.
Así que eso es todo lo que está pasando,
todo está muy bien nombrar espacio para usted.
Así que el resultado final, si lo hago nodo de aplicación y volver a cargar la página es
que si yo ahora busco
para la barra ... funcionalmente estas aplicaciones son las mismas
pero es sólo una especie de paso hacia una aplicación más limpia,
sin duda cuando se inicia escribiendo más y más código
y eso es todo lo que son.
Obviamente no especialmente sofisticado o complejo
pero esencialmente un punto de partida
para lo que será su primera aplicación js nodo.
Lo que haremos probablemente más tarde esta semana o este fin de semana
como lo están terminando en el aplicaciones PHP vamos a seguir
con una muy simple solicitud para el equipo para bucear
en similares en espíritu a el ejercicio de calentamiento para php
que basado en la mediados encuesta semestre,
personas encontraron útil pasando por el ejercicio
de hacer algo bastante simple
pero bastante guiada antes en realidad frente a algo más
por su cuenta por lo que se seguimiento con que
y, esencialmente, será por una semana y media
a partir de ahora se solapan ligeramente con php deliberadamente.
Cualquier pregunta entonces sobre expresar, en io socket
o confusión restante de lunes tal vez.
Muy bien, así que espero una de el tomar-a-formas hasta ahora es
que hay para algunos de estos Las cosas ciertamente mucho menos
gastos generales de lo que podría se han utilizado para.
Así que permítanme presentarles una última idea,
por lo que una muy común paradigma de programación
en escritura de Java que es realmente presente en jQuery
en las versiones recientes de modo que podría tener en realidad visto esta técnica
antes, pero también es bastante común en el mundo JS nodo,
que es común en Tim propia biblioteca de estantería
así que volveremos a visitar este en un ejemplo más concreto
en un momento es una solución codificar como este,
esto es representativo de código vimos el lunes, por lo que leemos archivo
En este contexto, no es un verdadero método que es similar en espíritu
a fs dot leer el archivo pero asumir que esto es sólo algunos hechos
hasta método que hace algo muy similar.
Así nos encontramos con unos pocos problemas el lunes en general
así que lo que es una especie de ... ¿por qué Es este un terreno resbaladizo,
Este llamar paradigma de programación Java script
y por devolver la llamada paradigma Sólo quiero decir que esta técnica
donde usted no devuelve valores inmediatamente
porque eso podría bloquear el servidor
de hacer algo más que es útil, en lugar de llamar de nuevo
como los zumbadores en Shake Shack cuando esté listo
a pasar de nuevo una respuesta como argumento.
Esta es una pendiente resbaladiza
donde muy rápidamente se convierte en molesto por qué?
Sí.
>> [Sección Inaudible]
>> Si, mínimamente se hace tipo de derecho ilegible
si usted tiene todas estas llamadas respaldos y si estás adheridos
al buen estilo se está haciendo bastante masiva sangría
con el tiempo y el caso Señalo esto ejemplo, si una especie de leche descremada
a través de ella es simplemente la intención de abrir un archivo json e imprimirlo,
como eso es todo y sin embargo, tienen unos 8 o 10 líneas aquí
que ya son una especie de mala manera con sangría,
tenemos intento de captura que es
Si no está familiarizado es una técnica de gestión de errores
que le permite probar algo
y si falla, entonces se coge con suerte
sin que todo su programa terminación, pero no hay
tanta complejidad como que tipo de tener que pensar en esto
y Dios no lo quiera que hagamos un par de otro método asincrónico llama,
la cosa ya es va a estar por aquí,
usted podría pensar que esto es una especie de una estética tonto pero esta
porque la llamada de vuelta paradigma es tan común, al menos,
en el código nativo de este nodo convertido muy rápidamente tedioso,
difíciles de depurar, la sangría comienza con la materia para que pueda ordenar
de las cosas chase abajo, es simplemente no es una manera muy feliz
de programación.
Así que lo que la gente ha hecho
en diversos nodo de contexto entre los ellos se tratan de simplificar esto,
os por ejemplo promesas es otra manera de pensar
acerca de cómo escribir código asíncrono que resulta visualmente algo
como la versión 1 en esta versión 2.
Yo reclamo y esto es de nuevo sólo una especie de mezclado
entre el código real y la pseudo código, esto es representativo
de cómo le gustaría volver a implementar exactamente lo mismo,
abrir un archivo json, analizar e imprimirlo
usando algo llamado promesas
y el detalle sintáctico clave es
que hay un encadenamiento pasando aquí.
Tenga en cuenta que el único punto y coma
en todo ... en realidad bien vamos a ... No quiero engañar.
Esto no es estrictamente necesario pero seamos coherentes,
cuenta de que el punto y coma que se refiere a la apertura
de toda esta declaración es todo el camino hasta aquí.
Así, mientras que he formateado este ... tipo de mira
como tres declaraciones, tres declaraciones que se pueden ver
en Java o en otros idiomas que tienen try y catch
y el manejo de excepciones más en general.
Tenga en cuenta que acabo de cadena el valor de retorno de cada
de estos métodos juntos.
Entonces, ¿qué está pasando, lectura de archivos si este es un método que existe,
aparentemente intenta para leer este archivo,
punto entonces es así, es una muy nombre común dado en el mundo
de promesas para el método que se debe ejecutar
si lo anterior sucedió.
Así que es algo así como el éxito manipulador, parse punto es así, json,
así parse punto json es simplemente un método
en la biblioteca json mundial y aparentemente se adhiere
en este caso, la modelo de promesa
así que decir que puede simplemente asumir que la llamada a este tipo
y si tiene éxito entonces llamar a este chico y luego
si eso es en realidad ejecuta simplemente consolar ingrese los datos
en cuestión.
Entonces, ¿dónde está el error manipulación, noto que he especie
de pisado muy ciegamente de esta saliente
y acaba de llamar esta método y a continuación, este método
sin comprobar para problemas.
Pues ¿dónde están los problemas presumiblemente manejado ... en estos
declaraciones de caché de modo diferente bibliotecas utilizan distintos
convenciones, pero en este caso, entonces es una especie
del controlador de éxito, caché es una especie de controlador de errores
y porque no hemos roto esta cadena que sólo seguir usando
notación de puntos para vincular la invocación del método original
de archivos de lectura y la función invocación cualquier error de clasificación
burbuja de su camino a través de la cadena
hasta que son en realidad manejados que es mucho más limpio que intentar
para tratar con él todos los maldito paso del camino
para que su código muy rápidamente se convierte en datos irreales.
En este caso estamos alegando que tratamos
para coger lo que se llama un error de sintaxis que es esencialmente un
subclase de un más genérico error y si eso sucede reclamo
que es json no válido de otro modo si se trata de un error de más genérico
que no esperábamos sólo más general dicen que no puede
leer el archivo.
Ahora bien, esto es sólo la intención ser código representativo
pero si usted ha programado en guión prima Java o en Java
u otros idiomas esto es código de procedimientos esencialmente,
se trata de una tradición más tratar sentencia catch
y esa es la estética y la funcionalidad que promete
o tratando de darle por el que usted puede pensar en él
tan sólo escribir try y luego atrapar y luego coger no tener
que preocuparse en cada único punto posible
donde un error podría manejar ... pasar,
se puede manejar todo al terminará cuando sea necesario de un pequeño bloque
del código, e incluso se puede distinguir entre errores
como se puede en este caso aquí.
Así que la nomenclatura que usted va a ver en la literatura tal vez
como Tim presenta algunas de esta materia también es
que lo ideal sería que desea promete resolver
y la resolución de un medio de la promesa que por fin regresan por así decirlo
pero no de una manera tradicional de valor, por lo que tampoco tiene éxito
por falla esencialmente.
Muy bien las preguntas, entonces, no es la intención de ser suficiente
para la exposición a las promesas pero sólo un modelo mental
para el código que comenzará a ver.