Node.js debería ser una de las tecnologías más populares de la actualidad. Este artículo presenta principalmente las características y escenarios de aplicación de Node.js.
Node.js es una plataforma construida en el tiempo de ejecución de Chrome JavaScript, que se utiliza para construir fácilmente aplicaciones de red rápidas y fáciles de escala. Node.js se hace liviano y eficiente con el evento, y es ideal para aplicaciones en tiempo real intensivas en datos que se ejecutan en dispositivos distribuidos.
1. Características
1.1 E/S asincrónica
La llamada E/S asincrónica es relativa a la E/S sincrónica. Muchas operaciones de E/S deben llevarse a cabo durante la ejecución del programa, como leer y escribir archivos, entrada y salida, respuesta de solicitud, etc. En términos generales, las operaciones de E/S requieren mucho tiempo. Por ejemplo, en el modo de programación tradicional, debe leer un archivo de varias g, todo el hilo se detendrá y esperará a que el archivo se lea y continúe ejecutándose. En otras palabras, las operaciones de E/S bloquean la ejecución del código, reduciendo en gran medida la eficiencia del programa.
Con respecto a la E/S asincrónica, en realidad no es desconocido para los ingenieros frontales, porque iniciar una solicitud AJAX es la llamada "asíncrona" más común. En el nodo, tomar leer un archivo (leer un archivo es una operación de E/S que lleva mucho tiempo) como ejemplo, es muy similar a la forma de iniciar una solicitud AJAX:
La copia del código es la siguiente:
var fs = require ('fs');
fs.ReadFile ('/Path', function (err, archivo) {
console.log ('Lea el archivo completado');
});
console.log ('Arrancar el archivo de lectura');
Después de que el código anterior se llama Fs.ReadFile, el código posterior se ejecuta inmediatamente, y el momento en que "Read File se completa" es impredecible. Cuando un hilo se encuentra con una operación de E/S, no esperará a que la operación de E/S termine de manera bloqueadora, pero simplemente enviará la solicitud de E/S al sistema operativo y continuará ejecutando declaraciones posteriores. Cuando el sistema operativo completa una operación de E/S, el hilo que realiza la operación de E/S se notifica en forma de evento, y el hilo procesará el evento en un momento específico.
1.2 Función de bucle de eventos y devolución de llamada
El llamado bucle de eventos significa que el nodo utilizará el mecanismo de eventos para resolver todas las operaciones asíncronas, y un hilo está constantemente en bucle para detectar la cola de eventos. El bucle de eventos verifica eventos no controlados en la cola de eventos hasta el final del programa. El método de programación de los eventos tiene las ventajas del acoplamiento ligero, suelto y centrado solo en los puntos de transacción. Sin embargo, en el escenario de múltiples tareas asincrónicas, los eventos son independientes entre sí, y cómo cooperar es un problema. En JavaScript, las funciones de devolución de llamada están en todas partes, y las funciones de devolución de llamada son la mejor manera de aceptar llamadas asincrónicas para devolver datos.
1.3 Un solo roscado
El nodo mantiene las características de JS como un solo hilo en el navegador. La mayor ventaja de un solo hilo es que no requiere un problema de sincronización consciente del estado como la programación multiproceso, no hay un punto muerto ni la sobrecarga de la conmutación de contexto de hilo. Un solo hilo también tiene sus debilidades, principalmente manifestadas en tres aspectos: la incapacidad de utilizar la CPU de múltiples núcleos; Los errores harán que toda la aplicación salga, y la robustez de la aplicación es digna del examen de ingreso de posgrado; Una gran cantidad de informática ocupará la CPU y hará que sea imposible continuar llamando a E/S asíncronosa.
Para resolver el problema anterior, Node adopta la misma idea que los trabajadores web HTML5 y usa Child_Process para resolver el problema de una gran cantidad de cálculo en un solo hilo. Al distribuir los cálculos a cada proceso infantil, se puede descomponer una gran cantidad de cálculos y los resultados se pueden pasar a través de mensajes de eventos entre procesos.
1.4 multiplataforma
El nodo es multiplataforma, es decir, el mismo conjunto de código JS se puede implementar y ejecutarse en Windows, Linux, OSX y otras plataformas. Esto se debe principalmente al hecho de que Node ha construido una arquitectura a nivel de plataforma libuv entre el sistema operativo y el sistema de módulos de nivel superior del nodo.
2. Escenarios de aplicación
1) Aplicaciones en tiempo real: como chat en línea, impulso de notificación en tiempo real, etc. (como Socket.io)
2) Aplicación distribuida: use los datos existentes a través de E/S paralelo eficiente
3) Aplicación de herramientas: herramientas masivas, desde la implementación de compresión front-end (como el gruñido) hasta aplicaciones de interfaz gráfica de escritorio
4) Aplicaciones del juego: el campo del juego tiene altos requisitos para tiempo real y concurrencia (como el marco de Pomelo de NetEase)
5) Use la interfaz estable para mejorar las capacidades de renderizado web
6) Entorno de lenguaje de programación front-end unificado: los desarrolladores front-end pueden ingresar rápidamente al desarrollo del lado del servidor (como la famosa arquitectura media de pila completa de JavaScript)