¿Qué es el nodo?
Es mejor tratar de cubrir todo al escribir algo, por lo que también he tomado algunos conceptos básicos de Internet. Algunos lugares han cambiado su comprensión propia. Si comprende estas cosas conceptuales, puede optar por omitir este párrafo.
1.Node es un intérprete JavaScript del lado del servidor, pero realmente creo que los estudiantes que son buenos en JavaScript pueden obtener fácilmente el nodo de aprendizaje, por lo que está equivocado. Resumen: No sé si el agua es profunda o no, pero de hecho no es superficial.
2. El objetivo del Node es ayudar a los programadores a construir aplicaciones altamente escalables y escribir códigos de conexión que puedan manejar decenas de miles de conexiones a una máquina física al mismo tiempo. Manejo de alta concurrencia y E/S asincrónicas es una de las razones por las cuales el nodo ha atraído la atención de los desarrolladores.
3.Node en sí ejecuta el motor JavaScript Google V8, por lo que la velocidad y el rendimiento son muy buenos. Puedes verlo mirando a Chrome. Además, mientras que el nodo lo encapsula, también mejora su capacidad para procesar datos binarios. Por lo tanto, el nodo no solo usa V8, sino que también lo optimiza para que sea más poderoso en varios entornos. (¿Qué es V8 JavaScript Engine? Por favor "Baidu Knows")
4. Extensiones y módulos de terceros juegan un papel importante en el uso del nodo. Lo siguiente también presentará la descarga de NPM. NPM es la herramienta de gestión de módulos. Úselo para instalar varios paquetes de software de nodo (como Express, Redis, etc.) y publicar los paquetes de software que escribió para Node.
Instalar nodo
Aquí hay una breve introducción a la instalación del nodo en dos entornos: Windows 7 y Linux. Al instalar, debe prestar atención a la versión de Python. La instalación falló muchas veces debido a problemas con la versión de Python. Se recomienda que la versión 2.6+ tenga errores de instalación de nodos. Si consulta la versión de Python, puede ingresar: Pyhton -V
1. Primero introduzcamos la instalación en Linux. El nodo es muy conveniente para instalar y usar en el entorno Linux. Se recomienda ejecutar el nodo en Linux. ^_^... Estoy usando ubuntu11.04
a. Paquete de dependencia de instalación: 50-100kb/s Cada paquete se puede descargar e instalar en un minuto.
La copia del código es la siguiente:
sudo apt-get install g ++ curl libssl-devapache2-utils
sudo apt-get install git-core
b. Ejecute el comando paso a paso en el terminal:
La copia del código es la siguiente:
Git clone git: //github.com/joyent/node.git
nodo CD
./configure
Hacer
sudo haz instalar
Si la instalación es suave, el nodo se instalará correctamente y tomará un total de 12 minutos para la red de 2 m.
Nota: Si no usa GIT para descargar el código fuente, puede descargar el código fuente directamente, pero debe prestar atención al problema de la versión del nodo al descargar e instalar de esta manera. Es el más conveniente de descargar e instalar usando GIT, por lo que se recomienda.
2. Use Cygwin para instalar el nodo en Windows. Este método no se recomienda porque realmente lleva mucho tiempo y buen carácter. Mi sistema es la versión insignia de Win7
Cygwin es un entorno de simulación Unix que se ejecuta en la plataforma Windows. La dirección de descarga es: http://cygwin.com/setup.exe.
Después de descargar Cygwin, inicie la instalación. Pasos:
a. Seleccione la fuente de descarga: instalar desde Internet
b. Seleccione el directorio raíz para descargar e instalar
do. Seleccione el directorio donde se almacena el archivo de descarga
d. Elija el método de conexión
mi. Seleccione el sitio web para descargar - http://mirrors.163.com/cygwin
F. El problema es en este paso, ha llegado el momento de probar tu personaje. El tiempo de descarga e instalación requerido es incierto. De todos modos, lleva mucho tiempo (más de 20 minutos), y la falla de instalación ocasionalmente ocurre. Haga clic en el icono de flecha rotativa frente a cada paquete para seleccionar la versión que desea. Cuando se seleccione, el signo "X" parecerá indicar que el paquete ha sido seleccionado. Seleccione el paquete que desea descargar:
La copia del código es la siguiente:Paquete Desarrollo:
GCC-G ++: compilador C ++
GCC-MINGW-G ++: encabezados de soporte y bibliotecas de Mingw32 para GCC C ++
GCC4-G ++: subpackaje G ++
GIT: archivos básicos del sistema de control de versiones rápidas
Make: La versión GNU de la utilidad 'Make'
OpenSSL-Devel: el entorno de desarrollo OpenSSL
PKG-Config: una utilidad utilizada para recuperar información sobre las bibliotecas instaladas
ZLIB-DEVEL: la biblioteca de compresión/descompresión de ZLIB (desarrollo)
Paquete del editor: VIM: VI mejorado VI editor mejorado
Paquete de Python: conmutador predeterminado para instalar el estado
Paquete web:
WGET: Utilidad para recuperar archivos del www a través de HTTP y FTP
CURL: herramienta de línea de comandos de transferencia de archivos multiprotocol
Captura de pantalla anterior, tome la descarga de ZLIB-devel como ejemplo:
Después de unos pocos pasos, el entorno se completa. Sin embargo, aún no es hora de instalar el nodo. Todavía necesita ejecutar Rebaseall en el modo Ash de Cywgin. Los pasos son los siguientes:
a. línea de comandos CMD
b. Ingrese el subdirectorio bin en el directorio de instalación de Cygwin
do. Ejecutar Ash para ingresar al modo de shell
d. ./rebaseall -v
mi. Cierre la ventana de la línea de comando sin errores
Ok, ahora es el momento de descargar e instalar nodo, iniciar cygwin.exe e ingresar:
La copia del código es la siguiente:
$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
$ tar xf nodo-v0.4.12.tar.gz
$ CD nodo-v0.4.12
$./Configurar
$ make
$ make install
3.Engente el archivo Node.exe directamente
Vaya directamente a NodeJs.org para descargar. Escuché que hay problemas inestables, pero si solo quieres aprender sobre el nodo en Windows primero, personalmente siento que este método es mucho mejor que instalar Cygwin.
Nota: Realmente no quería escribir el párrafo de instalar el nodo, pero aún lo escribí para la amplitud de este artículo. No esperaba que fuera mientras lo escribiera ... es una mesa de café
"Hola mundo" - ¿Por qué me siento un poco emocionado cada vez que veo esta oración, y estoy desconcertado ...
Primero, cree un archivo hello.js y copie el siguiente código en el archivo:
La copia del código es la siguiente:
var http = require ('http');
http.createServer (function (req, res) {
res.Writehead (200, {'Content-type': 'Text/Plain'});
res.end ('Hello World/n');
}). Escuchar (1337, "127.0.0.1");
console.log ('servidor que se ejecuta en http://127.0.0.1:1337/');
Lógica del código:
a. El método global requiere () se utiliza para importar módulos. En general, el valor de retorno del método requerir () se asigna directamente a una variable, y esta variable se usa directamente en el código JavaScript. requerir ("http") es cargar el módulo HTTP preestablecido del sistema
b. http.createServer es el método de un módulo, el propósito es crear y devolver un nuevo objeto de servidor web y vincular una devolución de llamada al servicio para manejar la solicitud.
do. El servidor HTTP se puede escuchar en un puerto específico a través del método http.listen ().
d. console.log no hace falta decir que aquellos que conocen Firebug deben saber que el nodo implementa este método.
Nota: Para obtener detalles específicos, consulte el documento cnodejs.org/cman/all.html#http.createServer
Luego ejecute el servidor de nodo, ejecute el código Hello.js y después de comenzar con éxito, verá el texto en Console.log (). Hay fotos y verdad:
Descargar y usar NPM
Además de la API proporcionada por el propio nodo, ahora hay muchos módulos de terceros que pueden mejorar en gran medida la eficiencia del desarrollo. NPM es Node's Package Manager, que puede usarlo para instalar los paquetes de software requeridos y publicar los paquetes de software escritos para NodeJS. Dirección oficial del sitio web: npmjs.org
La instalación solo requiere escribir una línea de código en el terminal:
La copia del código es la siguiente:
Curl http://npmjs.org/install.sh | mierda
NPM instala el paquete de extensión de nodo con la misma línea de código:
La copia del código es la siguiente:
NPM Install <Nombre del paquete> // Ejemplo: NPM Install Express
Nota: Si se informa el error del nombre de dominio durante la instalación del módulo, borre el caché> Cache NPM Clean o reinicie la computadora.
Comprender el concepto del módulo de nodo
En el nodo, diferentes componentes funcionales se dividen en diferentes módulos. La aplicación puede elegir y usar el módulo apropiado de acuerdo con sus necesidades. Cada módulo expondrá algunos métodos o atributos comunes. El usuario del módulo puede usar estos métodos o atributos directamente, y no es necesario comprender los detalles de implementación interna. Además de la API proporcionada por el propio nodo, los desarrolladores también pueden usar este mecanismo para dividir las aplicaciones en múltiples módulos para mejorar la reutilización del código.
1. ¿Cómo usar módulos?
Es muy conveniente usar módulos en el nodo. En el código JavaScript, puede usar directamente la función Global Request () para cargar un módulo.
En el ejemplo de "Hello World" en este momento, requiere ("http") puede cargar el módulo HTTP preestablecido del sistema; El nombre del módulo comienza con "./", como requerir ("./ mymodule.js") para cargar el módulo mymodule.js en el mismo directorio que el archivo JavaScript actual.
2. ¿Cómo desarrollar módulos usted mismo?
Cuando acabo de presentar que al usar requerir () para importar un módulo, el nombre del módulo comienza con "./" es el archivo del módulo que desarrollé por mí mismo. A lo que debe prestar atención es la ruta del sistema del archivo JS.
La lógica de procesamiento interna del módulo se encapsula en el código. Un módulo generalmente expondrá algunos métodos o atributos públicos para que otras personas lo usen. El código interno del módulo debe exponer estos métodos o atributos.
3. Tomemos un conjunto simple de ejemplos. Primero cree un archivo de módulo como mymodule.js, solo una línea de código
console.log ('Hola darren')
Luego cree un archivo test.js, importe este archivo js y ejecute nodo para ver los resultados
Hay muchos módulos de terceros en la comunidad de nodos ahora. Espero que más personas puedan unirse a esta gran familia aprendiendo el nodo y contribuir a la comunidad de nodos. Gracias de antemano, continuemos.
4. Tome un ejemplo más profundo. En este ejemplo, se introducirán privados y compartidos. Primero cree un mymodule.js, el código es el siguiente:
La copia del código es la siguiente:
var name = "darren";
this.location = "beijing";
this.showlog = function () {
console.log ('Hola darren')
};
Hay tres tipos en el código, a saber: atributos privados, atributos compartidos y métodos compartidos, y luego crean un Nodo Test.js y ejecutar el nodo
El área resaltada claramente nos dice que no podemos obtener métodos privados fuera del módulo, por lo que están indefinidos. La declaración de atributos compartidos y métodos compartidos debe ser precedida por la palabra clave esto.
¿Qué puede hacer el nodo y sus ventajas?
Ideas centrales del nodo: 1. Sin bloqueo; 2. Single-Threaded; 3. Impulsado por el evento.
En las aplicaciones web actuales, algunas interacciones entre el cliente y el servidor pueden considerarse basadas en eventos, por lo que AJAX es la clave de la respuesta oportuna de la página. Cada vez que se envía una solicitud (sin importar cuán pequeños sean los datos solicitados), irá y vendrá en la red. El servidor debe responder a esta solicitud, generalmente abriendo un nuevo proceso. Luego, mientras más usuarios visiten esta página, más solicitudes se iniciarán, y habrá problemas como el desbordamiento de la memoria, los conflictos causados por el intercalación lógica, la parálisis de la red y los bloqueos del sistema.
El objetivo de Node es proporcionar una solución para crear aplicaciones de red escalables. En el ejemplo de Hello World, el servidor puede manejar muchas conexiones de clientes al mismo tiempo.
El nodo y el sistema operativo tienen una convención de que si se crea un nuevo enlace, el sistema operativo notificará el nodo y luego irá a hibernación. Si alguien crea un nuevo enlace, entonces (nodo) ejecuta una devolución de llamada, cada enlace que toma solo una sobrecarga de pila (memoria) muy pequeña.
Tome un ejemplo simple de llamadas asincrónicas, prepare test.js y mymydule.js, ^_ ^. Copie el siguiente código en test.js y ejecute:
La copia del código es la siguiente:
var fs = require ('fs');
fs.ReadFile ('./ mymodule.js', function (err, data) {
if (err) tirar err;
console.log ('con éxito');
});
console.log ('async');
Asíncrono, todos deberían poder pensar que el tiempo de ejecución primero mostrará "async" y luego "con éxito".
El nodo no es bloqueo, y cuando llega una nueva solicitud al servidor, no hay necesidad de hacer nada por separado para esta solicitud. El nodo solo está esperando que ocurra la solicitud allí y maneja la solicitud si hay una solicitud.
El nodo es mejor para manejar solicitudes de tamaño pequeño y E/S basadas en eventos.
Node no es solo un marco para hacer un servicio web, puede hacer más, como puede hacer servicios de socket, por ejemplo, basados en archivos, y luego, en base a algunos ejemplos, puede haber procesos infantiles e internamente, es un mecanismo de eventos muy completo, incluidas algunas soluciones asíncronas sin inyección, en lugar de limitarse a la primera capa de la red. Al mismo tiempo, puede, incluso como un servicio web, proporcionar más funciones que pueden penetrar en el núcleo y el núcleo de servicio. Por ejemplo, el agente HTTP utilizado por nodo es que puede penetrar en el núcleo de servicio y hacer algunas funciones.
Concepto de flujo de eventos de nodo
Debido a que Node adopta un modo basado en eventos, muchos módulos generarán varios eventos, y el módulo puede agregar métodos de procesamiento de eventos. Todos los objetos que pueden generar eventos son instancias de la clase EventMitter en el módulo de eventos. El código es un idioma común en todo el mundo, por lo que todavía usamos el código para hablar:
La copia del código es la siguiente:
var eventos = requirir ("eventos");
var emitor = new Events.EventEmitter ();
emitter.on ("myevent", function (msg) {
console.log (msg);
});
emitter.emit ("myevent", "Hola mundo");
Un breve análisis de este párrafo:
1. Use el método requerir () para agregar el módulo de eventos y asignar el valor de retorno a una variable
2. La nueva oración Events.EventEmitter () crea un desencadenante de eventos, que es la llamada instancia de la clase EventEmitter en el módulo de eventos.
3. ON (Evento, oyente) se usa para agregar el controlador de eventos a un evento de evento para el evento
4. El método emit (evento, [arg1], [arg2], [...]) se utiliza para generar eventos. Cada función del oyente en la lista del oyente se ejecuta secuencialmente con los parámetros proporcionados como parámetros de la función del oyente.
Los métodos en la clase EventEmitter están relacionados con la generación y el procesamiento de eventos:
1. AddListener (evento, oyente) y ON (Evento, oyente) son métodos que agregan un oyente al final de la matriz de oyentes del evento especificado.
2. Una vez (evento, oyente) Este método agrega un oyente único para los eventos. El oyente se ejecuta cuando el evento se dispara por primera vez y se eliminará después
3. RemoveListener (evento, oyente) Este método se utiliza para eliminar el oyente de la matriz del oyente del evento especificado.
4. Emit (evento, [arg1], [arg2], [...]) que acaba de mencionar.
En el nodo, hay varios flujos de datos diferentes, y Stream es una interfaz abstracta implementada por diferentes objetos. Por ejemplo, la solicitud de solicitar un servidor HTTP es una transmisión, similar a STDOUT (salida estándar); incluido el sistema de archivos, solicitudes y respuestas HTTP, y conexiones TCP/UDP. La transmisión puede ser legible, redactada o legible y escritora. Todas las transmisiones son instancias de EventEmister, por lo que se pueden generar varios eventos.
Una transmisión legible produce principalmente los siguientes eventos:
1. Datos Este evento se activa cuando se leen los datos en la transmisión.
2. Enojo cuando no hay datos en la transmisión a leer, este evento se activa
3.Error Este evento se activa cuando ocurre un error al leer datos.
4. Clara cuando la transmisión está cerrada, este evento se activa, pero no todas las transmisiones activarán este evento. (Por ejemplo, un flujo de solicitud HTTP que entraba en una conexión no activará el evento 'Cerrar').
También hay un evento FD más especial, que se activa cuando se recibe un descriptor de archivos en la transmisión. Solo las transmisiones de UNIX admiten esta característica, y ningún otro tipo de transmisiones activará este evento.
Documentación detallada relacionada: http://cnodejs.org/cman/all.html#events_
Potente módulo de sistema de archivos del sistema de archivos
El módulo FS en el nodo se usa para operar en el sistema de archivos local. La E/S del archivo está encapsulada por la función POSIX estándar. Se debe acceder a este módulo utilizando requerir ('FS'). Todos los métodos proporcionan métodos asincrónicos y sincrónicos.
Los métodos proporcionados en el módulo FS se pueden utilizar para realizar operaciones básicas de archivos, incluida la lectura, la escritura, el cambio de nombre, la creación y eliminación de directorios, y la obtención de metadatos de archivos. Cada método de operación de archivos tiene dos versiones: versiones sincrónicas y asincrónicas.
Las versiones de las operaciones asíncronas utilizarán un método de devolución de llamada como el último parámetro. Cuando se completa la operación, se llamará al método de devolución de llamada. El primer parámetro del método de devolución de llamada siempre se reserva como una excepción que puede ocurrir durante la operación. Si la operación es correcta y exitosa, el valor del primer parámetro es nulo o indefinido.
El nombre del método de la versión de operación sincrónica es agregar una sincronización como sufijo después del método asíncrono correspondiente. Por ejemplo, la versión sincrónica del método asynchronous rename () es renamesync (). Los siguientes enumeran algunos métodos comunes en el módulo FS, y solo presenta la versión de la operación asíncrona.
¿Están listos los archivos test.js y mymodule.js? Copie el siguiente código en Test.js una vez
La copia del código es la siguiente: var fs = require ('fs');fs.unlink ('./ mymodule.js', function (err) {
if (err) tirar err;
console.log ('eliminado con éxito mymodule.js');
});
Si no hay error, entonces mymodule.js se eliminará. Es tan simple
Este es solo un ejemplo simple. Si está interesado, pruébelo usted mismo y practique la verdad. Debido a las razones de espacio, no daré muchos ejemplos. ^_^
Un resumen del nodo de aprendizaje:
1. Para mí, que tiene casi cero conocimiento sobre los comandos y conchas de Linux, he aprendido mucho conocimiento sobre Linux durante este período. Vim es realmente un editor poderoso, y se siente realmente bien no usar un mouse; Y una cosa es muy importante para mí. La programación bajo Linux es muy genial, especialmente en el equipo, que se utiliza para instalar más saludable^_^.
2. Comprenda un marco exitoso para el nodo JavaScript del lado del servidor, así como algunas de sus ventajas y uso, este artículo es el mejor resumen, por supuesto, este será solo el comienzo.
Algunas cosas que decir a todos:
1. Tengo que golpear el entusiasmo de algunas personas aquí. Si no sabe lo suficiente sobre la tecnología de backend o nunca se ha expuesto al lenguaje del servidor, no conozca las E/S y no tiene el concepto de flujo de procesamiento de backend, entonces ... El nodo no es una tecnología del lado del servidor adecuada para el nivel de entrada. ¿Por qué lo dices?
a. El punto clave es que hay pocos ejemplos y artículos en chino, por lo que será más problemático aprender sistemáticamente, por lo que siempre hay una sensación inmadura durante el uso, por supuesto, es causada principalmente por mi falta de familiaridad con él. De hecho, no hay muchas empresas que usen Node en China y, por supuesto, todavía hay muchas en el extranjero. Tomé una foto de cnodejs.org:
3. De hecho, me arrepiento de no ingresar a una empresa con la que sueñe, pero la vida debería ser así, con altibajos, que es exactamente lo que necesito y espero ... Entonces, todavía tengo que continuar mi nueva vida, ser su propio timonel, comprender su propia dirección y dejar que pase lo que pase.
b. Para los amigos sin experiencia, el nodo no es fácil comenzar. Se puede ver desde el "Hello World" más simple (la comprensión de varios entornos operativos y los detalles de la instalación requiere algo de esfuerzo). No compare la biblioteca jQuery. Las cosas manejadas son diferentes y los costos de aprendizaje también son diferentes. Por lo tanto, no se recomienda ser una tecnología del lado del servidor para principiantes. Si desea aprender un lenguaje del lado del servidor PHP y Python, es una buena opción, porque: hay muchos libros, ejemplos, múltiples marcos y muchos prácticos, simples y fáciles de entender y construir ...
C. Los anteriores son mis sugerencias personales. Debido a mi nivel limitado, por favor dame algunos consejos y espero ser despiadado.
2. No soy feo sobre los estándares de escritura de nodos y habilidades específicas. No tengo mucho código para escribir el nodo yo mismo, pero la idea de programación orientada a objetos es buena en todas partes.
3. Espero que este artículo sea útil para que todos aprendan el nodo