2011-07-09 15 views
7

Sé que se dice que node.js es "E/S controlada por eventos" javascript en el lado del servidor alojado en motor V8 Javascript. Visité el sitio web node.js, y luego leí la entrada de wikipedia, pero no puedo entender completamente dónde usarlo y cómo será útil. "I-O por eventos"? "Motor V8 Javascript"? En algún contexto, sin embargo, veo que el uso de "server-side" javascript como un pequeño overkill..I tomar, por ejemplo, este fragmento de código en el wikipedia entry of node.js:¿dónde encaja node.js dentro del contexto de desarrollo web?

var http = require('http'); 

http.createServer(function (request, response) { 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('Hello World\n'); 
}).listen(8000); 

console.log('Server running at http://127.0.0.1:8000/'); 

he estado pensando, ¿existe realmente una propósito importante en la ejecución de un servidor que particularmente sirve archivos javascript que se ejecutan en la parte frontal de la aplicación?

También bifurqué el repositorio node.js en github para aprender más sobre cómo funciona, y resulta que algunos de sus módulos están escritos en C++. ¿Entonces no es un javascript después de todo?

¿Alguien puede darme una explicación clara sobre todo esto? Lo siento si la pregunta no está clara o algo así, solo soy un principiante. Apreciaremos cualquier entrada/sugerencia. Gracias

+0

Por lo que entiendo, node.js puede manejar un montón de solicitudes concurrentes, porque cada solicitud no genera un nuevo hilo, como lo haría Apache. Más allá de eso, no puedo esperar para leer algunas de las respuestas a esta pregunta. – Stephen

+0

Es como PHP al principio. Solo había un pequeño conjunto de funciones/utilidades escritas en C, útiles para servir archivos y otras cosas en la red http://groups.google.com/group/comp.infosystems.www.authoring.cgi/msg/cc7d43454d64d133? pli = 1. La ventaja es que JS es más flexible que C++ y tiene una velocidad cercana a C++ con el motor te V8. Sin bloqueo, etc. – zad

+0

Es un marco de bajo nivel para el desarrollo de aplicaciones del lado del servidor, utiliza javascript y tiene todas las ventajas que probablemente haya leído en wikipedia. Hay marcos que se encuentran sobre node.js – zad

Respuesta

9

El servidor node.js es, en términos simples, un reemplazo para algo así como el servidor web Apache, pero está escrito en gran parte en JavaScript que se ejecuta en el servidor (ejecutado por el motor V8) en lugar de en el lado del cliente. Se puede ampliar con módulos de "código nativo" (escritos en, por ejemplo, C++) envueltos en una interfaz JavaScript para agregar funcionalidad, pero los módulos AFAIK most node.js son JavaScript puro.

"E/S controlada por eventos" es solo un término que describe los mecanismos normales de devolución de llamada asíncrona a los que está acostumbrado en JavaScript. En node.js usted proporciona devoluciones de llamadas para todo tipo de cosas, y su función se invoca cuando ocurre el evento relevante.

Según la cantidad de módulos que agregue, un servidor node.js es relativamente liviano en comparación con algo parecido a Apache, y de alguna manera mucho más simple.

Las dos ventajas principales a Node.js que veo son:

  1. Se le permite escribir tanto en el lado del servidor y del lado del cliente partes de una aplicación web en el mismo idioma. En algunos casos, puede usar el mismo código en ambos lados.
  2. Hace que la codificación del lado del servidor sea accesible para todos los desarrolladores web que conocen JavaScript sin tener que aprender un lenguaje de servidor más común como PHP o Java.

He aquí un artículo que encontré con que también podría arrojar algo de luz: What is Node.js?

+1

El segundo punto no es exactamente válido, ya que la mayoría de las personas que dicen conocer JS no conocen realmente los matices del idioma; ellos solo conocen la manipulación de jQuery y DOM. Una de las razones principales por las que JS es una buena opción para Node es que admite de forma nativa la E/S ** no bloqueante y asíncrona. –

+0

@Steve Wang: ¿Es eso parte de la especificación de JS, o debido a la implementación de V8? – sje397

+0

Eso es parte de la especificación. Javascript siempre ha admitido E/S asincrónicas sin bloqueo. Lo que no ha soportado es el E/S que ese nodo tiene, eso es lo que el nodo agrega a la mezcla. – jcolebrand

3

Aunque no puedo añadir mucho a lo @sje dicho, se repetirá el blog que enlazan compartía, ya que es el mejor recurso que he encontrado para explicar nodejs rápidamente:

http://radar.oreilly.com/2011/07/what-is-node.html

también tenga en cuenta que es de OReilly, que la mayoría de nosotros conocemos como la editorial de las mejores referencias para los programadores en el mercado en general;)

He estado pensando, ¿existe realmente un propósito importante en la ejecución de un servidor que particularmente sirve para archivos javascript que se ejecutan en la parte frontal de la aplicación?

Esto es totalmente incorrecto. Esta es la suposición más incorrecta sobre el nodo que podría hacer. Nodo ejecuta el javascript en el servidor tanto como se ejecuta el código ruby ​​o php o asp.net. El hecho de que el navegador también puede ejecutar javascript no tiene relación con el nodo.

De acuerdo, puede compartir módulos entre el servidor y el cliente (por ejemplo, rutinas de validación para datos de formulario) pero, en general, las bases de código son diferentes, ya que están destinados a diferentes cosas.

También bifurqué el node.js repo en github para aprender más sobre cómo funciona, y resulta que algunos de sus módulos están escritos en C++. ¿Entonces no es un javascript después de todo?

Sí, el nodo es un servidor que interpreta javascript utilizando el motor V8. Tiene que escribirse en algo. Le doy una comparación: el código Microsoft .NET está escrito principalmente en .NET encima de .NET, pero el código principal que realmente hace el trabajo, el tiempo de ejecución (el CLR como la mayoría de las personas se refieren a él) que administra el administrado -code, ese código está escrito en C. Lo mismo con node. Sí, la mayor parte (como viste) está escrito en javascript, pero las bibliotecas principales que ejecutan todo lo demás están escritas en C.

¿Alguien puede darme una explicación clara sobre todo esto? Lo siento si la pregunta no está clara o algo así, solo soy un principiante. Apreciaremos cualquier entrada/sugerencia. gracias

Espero que esto ayude a aclararlo en parte. Hay mucho que cubrir, y sin entrar en evented-io (que implica comprender los procesos y los hilos y el acceso io y un montón de otras cosas), esta es prácticamente la respuesta básica de alto nivel a esta pregunta. Te invito a la sala nodejs en el servidor de chat aquí si lo deseas, para más discusiones al azar que son fluidas. http://chat.stackoverflow.com/rooms/642/node-js

En cuanto a la primera pregunta que le preguntó:

dónde encaja en?

El mismo lugar ruby ​​y php y perl y python y asp.net do. En el servidor, generando el código que el cliente recibe.

1

No he visto a nadie dar una respuesta simple a esto todavía.

Node.js es:

  • el motor JavaScript V8
  • un bucle de eventos
  • algunas fijaciones ++ c, entre otras cosas, que dan V8 capacidades de OI (tanto de la red y el archivo IO)

Es importante tener en cuenta que Node no necesariamente tiene que usarse para el desarrollo web. Su propósito es "Evocado IO".

Cuestiones relacionadas