Tutorial Node.js: una guia completa per a principiants



Aquest tutorial de Node.js parlarà sobre l'arquitectura bàsica, el funcionament i els diversos mòduls de Node.js. També demostrarà una implementació pràctica de Node.js i Express.js.

Si alguna vegada heu sentit a parlar de Node.js, potser sabreu que és un dels marcs més importants i potents de JavaScript. Des del seu llançament, ha continuat mantenint la seva posició estrangulada al mercat de TI. Fins i tot amb la introducció de noves i vibrants M'agrada , , Meteor, etc., la popularitat de Node.js mai sembla cessar. Us pregunteu per què? Doncs bé, amb l’ajut d’aquest tutorial de Node.js, us donaré una idea completa d’ell. Per tant, prepareu-vos per enamorar-vos de Node.js.

En aquest tutorial de Node.js, parlaré dels temes següents:





Què és Node.js?

Node.js és un marc potent desenvolupat a El motor JavaScript V8 de Chrome que compila el JavaScript directament al codi de la màquina nativa. És un marc lleuger que s’utilitza per crear aplicacions web del servidor i que amplia l’API JavaScript per oferir funcionalitats habituals del servidor. Generalment s’utilitza per al desenvolupament d’aplicacions a gran escala, especialment per a llocs de transmissió de vídeo, aplicacions d’una sola pàgina i altres aplicacions web. Node.js fabrica ús d'un model d'E / S no bloquejat basat en esdeveniments, que el converteix en una selecció adequada per a les aplicacions en temps real intensives en dades.

Com qualsevol altre llenguatge de programació, node.js fa ús de paquets i mòduls. Aquestes són les biblioteques que contenen diverses funcions i s’importen de npm (gestor de paquets de node) al nostre codi i s’utilitzen als programes. A continuació s’enumeren algunes de les funcions principals que defineixen Node.js:



Característiques de Node.js

  1. Codi obert
    Node.js és una llicència MIT de framework de codi obert que és compatible amb una enorme comunitat. La seva comunitat és pràcticament activa i han contribuït a afegir noves capacitats a les aplicacions Node.js.
  2. Senzill i ràpid
    Atès que Node.js es basa en el motor JavaScript V8 de Google Chrome, les seves biblioteques són capaces d’executar ràpidament el codi.
  3. Asíncron
    Totes les biblioteques de Node.js són asíncrones, cosa que significa que els servidors basats en Node.js mai no esperen que una API retorni la resposta i passi a la següent API.
  4. Alta escalabilitat
    A causa del mecanisme d'esdeveniments, Node.js és altament escalable i ajuda el servidor a una resposta que no bloqueja.
  5. De rosca única
    Amb l'ajut del bucle d'esdeveniments, Node.js és capaç de seguir el model d'un únic fil. Això permet a un sol programa gestionar diverses sol·licituds.
  6. Sense memòria intermèdia
    Una de les principals funcionalitats de les aplicacions Node.js és que mai no emmagatzema tampoc cap dada.
  7. Multiplataforma
    Node.js es pot construir i desplegar fàcilment en diverses plataformes com Windows, MAC i Linux.

Avancem ara i veurem com implementar el codi real al navegador. Abans, però, heu de descarregar i instal·lar als vostres sistemes. Podeu consultar el meu altre article per saber-ne el complet Procés d'instal·lació de Node.js .

Ara, anem més endavant en aquest tutorial de Node.js, on parlaré del component més important de Node.js, és a dir, npm.

NPM (Node Package Manager)

NPM significa Node Package Manager que, com el seu nom indica, és un gestor de paquets per als paquets / mòduls Node.js. Des de la versió 0.6.0 de Node. en endavant, s'ha afegit npm per defecte a la instal·lació del node. Us estalvia la molèstia d’instal·lar explícitament npm.



NPM bàsicament ajuda de dues maneres:

diferència entre ansible i xef
  1. Proporciona i allotja repositoris en línia per a paquets / mòduls node.js que es poden descarregar i utilitzar fàcilment en els nostres projectes. Els podeu trobar aquí: npmjs.com
  2. Proporciona la utilitat de línia d'ordres per instal·lar diversos paquets Node.js, gestionar les versions de Node.js i les dependències dels paquets.

Però ara us heu de preguntar què són exactament aquests mòduls i com ens ajuden a construir les aplicacions Node.js. Bé, a la següent secció d’aquest tutorial de Node.js, us oferiré una visió completa dels mòduls de Node.js.

Mòduls Node.js

Els mòduls de Node.js representen diverses funcionalitats agrupades en fitxers JS individuals o múltiples. Aquests mòduls tenen un context únic, de manera que mai interfereixen ni contaminen l'abast d'altres mòduls.

Aquests mòduls permeten la reutilització del codi i milloren la facilitat d’ús. Node.js proporciona bàsicament tres tipus de mòduls:

  1. Mòduls bàsics
  2. Mòduls locals
  3. Mòduls de tercers

Mòdul bàsic

Atès que Node.js és un lleuger marc, els mòduls bàsics agrupen les funcionalitats mínimes absolutes. Aquests mòduls generalment es carreguen quan el procés Node inicia la seva execució. Tot el que heu de fer és importar aquests mòduls bàsics per utilitzar-los al vostre codi.

A continuació he enumerat alguns dels mòduls bàsics importants.

Mòdul bàsic Descripció
http Conté classes, mètodes i esdeveniments necessaris per crear el servidor HTTP Node.js
url Conté mètodes per a la resolució i l'anàlisi d'URL al node
cadena de consulta Conté mètodes per tractar una cadena de consulta de Node
Camí Conté mètodes per tractar camins de fitxers
fs Conté classes, mètodes i esdeveniments per treballar amb E / S de fitxers
util Conté funcions d’utilitat que poden ser útils per als programadors

Podeu carregar el mòdul bàsic mitjançant el codi següent:

var module = require ('nom_mòdul')

Ara veiem què són els 'mòduls locals'.

Mòduls locals

Els mòduls locals de Node.js són mòduls personalitzats creats localment per l'usuari / desenvolupador a l'aplicació. Aquests mòduls poden incloure diverses funcionalitats agrupades en fitxers i carpetes diferents que es poden distribuir fàcilment a la comunitat Node.js mitjançant NPM.

Aquests mòduls es carreguen de manera similar als mòduls bàsics. Us mostrem com fer-ho mitjançant un exemple bàsic.

Creeu el fitxer module.js personalitzat / local

var detail = {name: function (name) {console.log ('Name:' + name)}, domain: function (domain) {console.log ('Domain:' + domain)}} module.exports = detail

Incloeu el fitxer del mòdul al fitxer principal de l’aplicació.

var myLogModule = require ('./ Local_module.js') myLogModule.name ('Edureka') myLogModule.domain ('Educació')

Ara podeu executar aquests fitxers amb l'ordre següent:

node application.js

Permeteu-me que us mostri què són els mòduls externs.

Mòduls externs

Podeu utilitzar l'external o 3rdmòduls de festa només descarregant-los mitjançant NPM. Aquests mòduls són generalment desenvolupats per altres desenvolupadors i són d’ús lliure. Pocs dels millors mòduls externs són express, react, glop, mangosta, moca, etc.

Carregant globalment els mòduls de tercers:

npm install --g

Incloeu el fitxer del mòdul al fitxer principal de l'aplicació:

npm install --save

Fitxer JSON

El fitxer package.json a Node.js és el cor de tota l'aplicació. Bàsicament és el fitxer manifest que conté les metadades del projecte. Per tant, entendre i treballar amb aquest fitxer esdevé molt important per al desenvolupament del projecte Node amb èxit.

El fitxer package.json consisteix generalment en les metadades de l'aplicació, que es classifiquen en dues categories següents:

  1. Identificació de propietats de metadades: Consisteix en propietats com el nom del projecte, la versió actual del mòdul, la llicència, l'autor del projecte, la descripció del projecte, etc.
  1. S'està escrivint directament al fitxer: Podeu escriure directament la informació necessària al fitxer package.json i incloure-la al vostre projecte.

A hores d'ara ja esteu familiaritzat amb els diversos components de l'aplicació Node JS. A la següent secció d’aquest tutorial de Node.js, compartiré alguns aspectes bàsics de Node Js perquè puguem començar amb les mans posades.

Conceptes bàsics de Node.js

Com que Node.js és un framework JavaScript, utilitza la sintaxi JavaScript. Si voleu aprendre JavaScript en detall, podeu fer-hi referència . De moment, us analitzaré alguns aspectes bàsics de Node.js, com ara:

Tipus de dades

Com qualsevol altre llenguatge de programació, Node.js té diversos tipus de dades, que es classifiquen a més en tipus de dades primitius i no primitius.

Els tipus de dades primitives són:

es pot fer una gran quantitat d'objectes a Java
  1. Corda
  2. Número
  3. Booleà
  4. Nul
  5. Sense definir

Els tipus de dades no primitius són:

  1. Objecte
  2. Data
  3. Matriu

variables

Les variables són entitats que contenen valors que poden variar durant el transcurs d’un programa. Per crear una variable a Node.js, heu de fer servir una paraula clau reservada var. No cal assignar cap tipus de dades, ja que el compilador el seleccionarà automàticament.

Sintaxi:

var varName = valor

Operadors

Node.js admet els operadors següents:

Tipus d'operador Operadors
Aritmètica +, -, /, *,%, ++, -
Tasca =, + =, - =, * =, / =,% =
Condicional =?
Comparació ==, ===,! =,! ==,>,> =,<, <=,
Lògic &&, ||,!
Per bits &, |, ^, ~,<>, >>>

Funcions

Les funcions de Node.js són un bloc de codi que té un nom i està escrit per assolir una tasca concreta. Heu d’utilitzar la funció de paraula clau per crear-la. Una funció és generalment un procés en dos passos. La primera és definir la funció i la segona la invoca. A continuació es mostra la sintaxi de crear i invocar una funció:

Exemple:

// Definició d'una funció funció display_Name (firstName, lastName) {alert ('Hello' + firstName + '' + lastName)} // Invocació de la funció display_Name ('Park', 'Jimin')

Objectes

Un objecte és un tipus de dades no primitiu que pot contenir diversos valors en termes de propietats i mètodes. Els objectes Node.js són entitats independents ja que no hi ha cap concepte de classe. Podeu crear un objecte de dues maneres:

  1. Utilitzant Object literal
  2. Utilitzant el constructor d’objectes

Exemple:

// objecte amb propietats i mètode var empleat = {// propietats firstName: 'Minho', cognom: 'Choi', edat: 35, salari: 50000, // mètode getFullName: function () {retorna this.firstName + '' + this.lastName}}

Sistema de fitxers

Per accedir al sistema de fitxers físics, Node.js fa servir el fitxer fs mòdul que bàsicament s'encarrega de totes les operacions d'E / S de fitxers asíncrons i síncrons. Aquest mòdul s’importa mitjançant l’ordre següent:

var fs = require ('fs')

Alguns dels usos generals dels mòduls del sistema de fitxers són:

  • Llegiu fitxers
    1. fs.readFile ()
var http = require ('http') var fs = require ('fs') http.createServer (function (req, res) {fs.readFile ('script.txt', function (err, data) {res.writeHead ( 200, {'Content-Type': 'text / html'}) res.write (data) res.end ()})}). Listen (8080)
  • Crea fitxers
    1. appendFile ()
    2. open ()
    3. writeFile ()
  • Actualitzar fitxers
    1. fs.appendFile ()
    2. fs.writeFile ()
  • Eliminar fitxers
    1. fs.unlink ()
  • Canvieu el nom dels fitxers
    1. fs.rename ()

Per tant, amb aquestes ordres, podeu realitzar pràcticament totes les operacions necessàries als vostres fitxers. Anem ara amb aquest tutorial de Node.js i vegem què són els esdeveniments i com es gestionen a Node.js.

Esdeveniments

Com ja he esmentat, les aplicacions Node.js tenen un únic subprocés i es basen en esdeveniments. Node.js admet la simultaneïtat, ja que es basa en esdeveniments i, per tant, fa ús de conceptes com esdeveniments i devolucions de trucada. Les trucades de funció asincronitzada ajuden Node.js a mantenir la simultaneïtat a tota l'aplicació.

Bàsicament, en una aplicació Node.js, hi ha un bucle principal que espera i escolta els esdeveniments i, un cop finalitzat qualsevol esdeveniment, inicia immediatament una funció de devolució de trucada.

El diagrama següent representa com es condueixen els esdeveniments a Node.js.

Model de fil - Tutorial Node.js - Edureka

Una cosa que heu de tenir en compte aquí és que, tot i que els esdeveniments tenen un aspecte similar a les funcions de devolució de trucada, la diferència rau en les seves funcionalitats. Quan una funció asíncrona torna els seus resultats, s'invoca la devolució de trucada, per altra banda, la gestió d'esdeveniments funciona completament en el patró d'observador. I a Node.js, els mètodes que escolten els esdeveniments s’anomenen observadors. En el moment que s’activa un esdeveniment, la seva funció d’escolta comença a executar-se automàticament. Els mòduls d’esdeveniments i la classe EventEmitter proporcionen múltiples esdeveniments integrats que s’utilitzen per lligar esdeveniments amb oients d’esdeveniments. A continuació he escrit la sintaxi per a això.

Vinculació d'esdeveniments a un oient d'esdeveniments

// Importa el mòdul d'esdeveniments var my_Events = require ('events') // Crea un objecte eventEmitter var my_EveEmitter = new my_Events.EventEmitter ()

Vinculació del gestor d'esdeveniments a un esdeveniment

// Esdeveniment vinculant i gestor d'esdeveniments my_EveEmitter.on ('eventName', eventHandler)

Activació d'un esdeveniment

// Activa un esdeveniment my_EveEmitter.emit ('eventName')

Ara intentem implementar les coses que he comentat en aquesta secció d'esdeveniments de Node.js.El codi següent mostra una representació senzilla de l'execució d'esdeveniments a Node.js.

var emitter = require ('events'). EventEmitter function iterateProcessor (num) {var emt = new emitter () setTimeout (function () {for (var i = 1 i & lt = num i ++) {emt.emit ('BeforeProcess' , i) console.log ('Processament de la iteració:' + i) emt.emit ('AfterProcess', i)}}, 5000) return emt} var it = iterateProcessor (5) it.on ('BeforeProcess', function ( info) {console.log ('Inici del procés per a' + info)}) it.on ('AfterProcess', funció (info) {console.log ('Finalització del processament de' + info)

A la següent secció d’aquest tutorial de Node.js, us donaré informació sobre un dels mòduls més importants de Node.js anomenat mòdul HTTP.

Mòdul HTTP

Generalment, Node.js s’utilitza per desenvolupar aplicacions basades en servidor. Però mitjançant el mòdul, podeu crear fàcilment servidors web que puguin respondre a les peticions del client. Per tant, també es fa referència al mòdul web i proporciona mòduls com HTTP i petició que faciliten que Node.js processi les sol·licituds del servidor.

Podeu incloure aquest mòdul fàcilment a la vostra aplicació Node.js només escrivint el codi següent:

var http = require ('http')

A continuació he escrit un codi que mostra com es desenvolupa un servidor web a Node.js.

// trucar a la biblioteca http var http = require ('http') var url = require ('url') // crear servidor var server = http.createServer (funció (requ, res) {// configuració de la capçalera del contingut res.writeHead ( 200, ('Content-Type', 'text / html')) var q = url.parse (req.url, true) .query var txt = q.year + '' + q.month // send string to response res.end (txt)}) // assignant 8082 com a port d'escolta del servidor server.listen (8082)

A la següent secció d'aquest tutorial de Node.js, parlaré d'Express.js, que s'utilitza molt per al desenvolupament d'aplicacions web del servidor.

Express.js

Express.js és un framework construït sobre Node.js que facilita la gestió del flux de dades entre el servidor i les rutes a les aplicacions del servidor. És un marc lleuger i flexible que proporciona una àmplia gamma de funcions necessàries per al web i el desenvolupament d'aplicacions mòbils.

Express.js es desenvolupa al mòdul middleware de Node.js anomenat connectar . El mòdul connect també utilitza http mòdul per comunicar-se amb Node.js. Per tant, si esteu treballant amb algun dels mòduls de middleware basats en la connexió, podeu integrar-vos fàcilment amb Express.js.

No només això, alguns dels principals avantatges d'Express.js són:

  • Fa que el desenvolupament d'aplicacions web sigui més ràpid
  • Ajuda a la creació d'aplicacions web i mòbils de tipus d'una pàgina, de diverses pàgines i híbrides
  • Express proporciona dos motors de plantilla, Jade i EJS
  • Express segueix l'arquitectura Model-View-Controller (MVC)
  • Integració amb bases de dades com MongoDB, Redis, MySQL
  • Defineix un error en el maneig del middleware
  • Simplifica la configuració i la personalització fàcils de l'aplicació.

Amb totes aquestes funcions, Express assumeix la responsabilitat de la part del fons a la pila MEAN. Mean Stack és la pila de programari JavaScript de codi obert que s’utilitza per crear llocs web dinàmics i aplicacions web. Aquí, SIGNIFICAR significa M ongoDB, ÉS xpress.js, A ngularJS i N ode.js.

Vegem ara un exemple senzill per entendre com funciona Express.js amb Node.js per facilitar la nostra feina. Però abans de començar a treballar amb Express.js, heu d’instal·lar-lo al vostre sistema.

Per instal·lar Express.js globalment, podeu utilitzar l'ordre següent:

npm install -g express

O bé, si voleu instal·lar-lo localment a la carpeta del projecte, heu d'executar l'ordre següent:

npm install express --save

Com que hem acabat tots els preparatius, saltem ara directament a la implementació pràctica. Aquí mostraré una aplicació d’autenticació d’usuari senzilla mitjançant Node.js i Express.js.

Tutorial de Node.js Desenvolupament d'aplicacions pas a pas amb Express.js

Per a això, necessitarem fitxers següents:

  • package.json
  • script.js
  • vistes
    • index.jade
    • login.jade
    • segur.jade
    • no autoritzat.jade
    • benvinguda.jade
  • lib
    • routes.js

Comencem, doncs package.json .

{'author': 'Edureka', 'name': 'Express_Demo', 'description': 'Express amb Node.js', 'version': '0.0.0', 'scripts': {'start': 'node script.js '},' motors ': {' node ':' ~ 0.4.12 '},' dependencies ': {' connect-flash ':' ^ 0.1.1 ',' cookie-parser ':' ^ 1.4 .3 ',' express ':' ^ 3.21.2 ',' jade ':' ^ 0.20.3 ',' req-flash ':' 0.0.3 '},' devDependencies ': {}}

A continuació, heu de crear el fitxer script.js .

var express = require ('express') var http = require ('http') var port = 8999 var app = express () const flash = require ('connect-flash') var cookieParser = require ('cookie-parser') var servidor = funció http.createServer (aplicació) checkAuth (requ, res, següent) {console.log ('checkAuth' + req.url) // no serveix / protegeix a aquells que no han iniciat sessió si (req.url = == '/ secure' && (! req.session ||! req.session.authenticated)) {res.render ('no autoritzat', {status: 403}) return} next ()} app.use (flash () ) app.use (cookieParser ()) app.use (express.session ({secret: 'example'})) app.use (express.bodyParser ()) app.use (checkAuth) app.use (app.router) app.set ('motor de visualització', 'jade') app.set ('opcions de visualització', {layout: false}) require ('./ lib / routes.js') (app) app.listen (port) console .log ('Escolta del node al port% s', port)

Ara, creeu una carpeta anomenada vista, sota la qual afegirà els fitxers de jade que seran responsables de diverses vistes de pàgina. El primer fitxer de visualització que heu de crear és index.jade .

!!! 5 html (lang = 'ca') head title Autenticació d'usuari Exemple cos h1 centre Demostració d'autenticació mitjançant Express h3 Aneu a h4 ul li: a (href = '/ secure') Contingut segur li: a (href = '/ welcome') Pàgina de benvinguda li: a (href = '/ logout') Tanca la sessió

Ara, creeu el fitxer login.jade dossier.

!!! 5 html (lang = 'ca') head title Exemple d'autenticació expressa cos cos h1 centre Inicieu la sessió a aquest centre d'exemple d'autenticació Express p Utilitzeu usuari per al nom d'usuari i passar per a la contrasenya. formulari (mètode = 'publicació') etiqueta p (per a 'nom d'usuari') Entrada d'adreça de correu electrònic (tipus = 'text', nom = 'nom d'usuari', class = 'control de forma', id = 'exempleInputPassword1', marcador de posició = ' Correu electrònic ', style =' width: 400px ') p etiqueta central (per a =' contrasenya ') Entrada de contrasenya (type =' contrasenya ', nom =' contrasenya ', class =' ​​control de forma ', id =' exempleInputPassword1 ', placeholder = 'Contrasenya', style = 'width: 400px') p centre Envia: cada missatge en flash h4 (style = 'color: red') # {message}

El següent pas és crear el fitxer benvinguda.jade .

!!! 5 html (lang = 'ca') head title Exemple d'autenticació d'usuari body h1 center Benvingut al tutorial d'Edureka.

A continuació, creeu el fitxer segur.jade dossier.

com utilitzar l'iterador de Java
!!! 5 html (lang = 'ca') head title Exemple d'autenticació expressa cos cos h1 centre Hola, usuari segur. p Aneu a ul li: a (href = '/ secure') Contingut segur li: a (href = '/ welcome') Pàgina de benvinguda li: a (href = '/ logout') Tancar la sessió

Ara, creeu el fitxer no autoritzat.jade dossier.

!!! 5 html (lang = 'ca') head title Autenticació d'usuari Exemple cos h1 centre No autoritzat p No està autoritzat a veure aquesta pàgina. p Si us plau ' per continuar

Ara heu de crear una carpeta i posar-li un nom lib . Ara, creeu un fitxer ruta.js que maparà totes les pàgines.

var util = require ('util') module.exports = function (app) {app.get ('/', function (req, res, next) {res.render ('index')}) app.get (' / welcome ', function (req, res, next) {res.render (' welcome ')}) app.get (' / secure ', function (req, res, next) {res.render (' secure ')} ) app.get ('/ login', function (req, res, next) {res.render ('login', {flash: req.flash ()})}) app.post ('/ login', function ( req, res, next) {// és possible que vulgueu fer una cerca de base de dades o alguna cosa més escalable aquí si (req.body.username && req.body.username === 'usuari' && req.body.password && req.body.password === 'pass') {req.session.authenticated = true res.redirect ('/ secure')} else {req.flash ('error', 'El nom d'usuari i la contrasenya són incorrectes') res. redirect ('/ login')}}) app.get ('/ logout', function (req, res, next) {delete req.session.authenticated res.redirect ('/')})}

Ara, si voleu executar aquest codi pel vostre compte, el podeu descarregar des d’aquí: PDF tutorial de Node.js .

Amb això, arribem al final d’aquest tutorial de Node.js. Espero haver estat capaç d’explicar els conceptes de Node.js des de la base.

Si heu trobat aquest 'Tutorial de Node.js 'Rellevant, fes un cop d'ull al per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest tutorial de Node.js i us respondrem.