Node.js Tutorial - Een complete gids voor beginners



Deze Node.js Tutorial gaat over de basisarchitectuur, werking en verschillende modules van Node.js. Het zal ook een praktische implementatie van Node.js en Express.js demonstreren.

Als je ooit van Node.js hebt gehoord, weet je misschien dat dit een van de meest prominente en krachtige frameworks van JavaScript is. Sinds de release heeft het zijn wurggreep op de IT-markt behouden. Zelfs met de introductie van nieuw en levendig Leuk vinden , , Meteor etc., de populariteit van Node.js lijkt nooit op te houden. Afvragen waarom? Welnu, met behulp van deze Node.js-zelfstudie zal ik u er een volledig inzicht in geven. Dus maak je klaar om verliefd te worden op Node.js.

In deze Node.js-zelfstudie zal ik de onderstaande onderwerpen bespreken:





Wat is Node.js?

Node.js is een krachtig framework ontwikkeld op De V8 JavaScript-engine van Chrome die het JavaScript rechtstreeks compileert in de oorspronkelijke machinecode. Het is een lichtgewicht raamwerk dat wordt gebruikt voor het maken van webtoepassingen aan de serverzijde en breidt de JavaScript-API uit om de gebruikelijke serverfunctionaliteit te bieden. Het wordt over het algemeen gebruikt voor grootschalige applicatie-ontwikkeling, vooral voor videostreaming-sites, single page-applicaties en andere webapplicaties. Node.js maakt gebruik van een gebeurtenisgestuurd, niet-blokkerend I / O-model, waardoor het de juiste keuze is voor de data-intensieve real-time applicaties.

Net als alle andere programmeertalen maakt node.js gebruik van pakketten en modules. Dit zijn de bibliotheken die verschillende functies bevatten en vanuit npm (node ​​package manager) in onze code worden geïmporteerd en in de programma's worden gebruikt. Enkele van de belangrijkste kenmerken die Node.js definiëren, worden hieronder vermeld:



Kenmerken van Node.js

  1. Open source
    Node.js is een open source framework MIT-licentie die wordt ondersteund door een enorme community. De gemeenschap is vrijwel actief en heeft bijgedragen aan het toevoegen van nieuwe mogelijkheden aan Node.js-applicaties.
  2. Simpel en snel
    Omdat Node.js is gebouwd op de V8 JavaScript-engine van Google Chrome, zijn de bibliotheken in staat om code snel uit te voeren.
  3. Asynchroon
    Alle bibliotheken van Node.js zijn asynchroon, wat betekent dat de op Node.js gebaseerde servers nooit wachten op een API om het antwoord terug te sturen en door te gaan naar de volgende API.
  4. Hoge schaalbaarheid
    Vanwege het gebeurtenismechanisme is Node.js zeer schaalbaar en helpt het de server bij een niet-blokkerende reactie.
  5. Met één schroefdraad
    Met behulp van event-looping kan Node.js het single-threaded model volgen. Hierdoor kan een enkel programma meerdere verzoeken afhandelen.
  6. Geen buffering
    Een van de belangrijkste functionaliteiten van Node.js-applicaties is dat het nooit gegevens buffert.
  7. Cross-platform
    Node.js kan eenvoudig worden gebouwd en geïmplementeerd op verschillende platforms zoals Windows, MAC en Linux.

Laten we nu verder gaan en kijken hoe we de daadwerkelijke code in de browser kunnen implementeren. Maar daarvoor moet u downloaden en installeren op uw systemen. U kunt mijn andere artikel verwijzen om het volledige te kennen Node.js installatieproces .

Laten we nu dus verder gaan in deze Node.js-zelfstudie, waar ik het zal hebben over het belangrijkste onderdeel van Node.js, namelijk npm.

NPM (Node Package Manager)

NPM staat voor Node Package Manager, wat, zoals de naam suggereert, een pakketbeheerder is voor Node.js-pakketten / -modules. Vanaf Node-versie 0.6.0. en daarna is npm standaard toegevoegd in de knooppuntinstallatie. Het bespaart u het gedoe om npm expliciet te installeren.



NPM helpt in principe op twee manieren:

servicenow tutorial voor beginners pdf
  1. Biedt en host online opslagplaatsen voor node.js-pakketten / -modules die gemakkelijk kunnen worden gedownload en gebruikt in onze projecten. Je vindt ze hier: npmjs.com
  2. Biedt het opdrachtregelhulpprogramma om verschillende Node.js-pakketten te installeren, Node.js-versies en afhankelijkheden van de pakketten te beheren.

Maar nu moet u zich afvragen wat deze modules precies zijn en hoe ze ons helpen bij het bouwen van de Node.js-toepassingen. Welnu, in het volgende gedeelte van deze Node.js-zelfstudie zal ik je een volledig inzicht geven in Node.js-modules.

Node.js-modules

De modules in Node.js vertegenwoordigen verschillende functionaliteiten die zijn gebundeld in enkele of meerdere JS-bestanden. Deze modules hebben een unieke context, waardoor ze nooit de reikwijdte van andere modules verstoren of vervuilen.

Deze modules maken herbruikbaarheid van de code mogelijk en vergroten het gebruiksgemak. Node.js biedt in principe drie soorten modules:

  1. Kernmodules
  2. Lokale modules
  3. Modules van derden

Kernmodule

Omdat Node.js een zeer lichtgewicht framework, bundelen de kernmodules de absolute minimumfunctionaliteiten. Deze modules worden over het algemeen geladen wanneer het Node-proces met de uitvoering begint. Het enige dat u hoeft te doen, is deze kernmodules importeren om ze in uw code te gebruiken.

Hieronder heb ik een aantal van de belangrijkste Core modules op een rijtje gezet.

Kernmodule Omschrijving
http Bevat klassen, methoden en gebeurtenissen die nodig zijn om een ​​Node.js HTTP-server te maken
url Bevat methoden voor URL-resolutie en parsering in Node
querystring Bevat methoden om met een queryreeks van Node
pad Bevat methoden om met bestandspaden om te gaan
fs Bevat klassen, methoden en gebeurtenissen om te werken met bestands-I / O
Nuttig Bevat hulpprogramma-functies die handig kunnen zijn voor programmeurs

U kunt uw kernmodule laden met de onderstaande code:

var module = vereisen ('module_name')

Laten we nu eens kijken, wat zijn ‘lokale modules’.

Lokale modules

De lokale modules van Node.js zijn aangepaste modules die lokaal door de gebruiker / ontwikkelaar in de applicatie worden gemaakt. Deze modules kunnen verschillende functionaliteiten bevatten die zijn gebundeld in verschillende bestanden en mappen die gemakkelijk kunnen worden gedistribueerd in de Node.js-community met behulp van NPM.

Deze modules worden op dezelfde manier geladen als kernmodules. Laat u zien hoe u dit moet doen aan de hand van een eenvoudig voorbeeld.

Maak uw aangepaste / lokale module.js-bestand

var detail = {naam: functie (naam) {console.log ('Naam:' + naam)}, domein: functie (domein) {console.log ('Domein:' + domein)}} module.exports = detail

Voeg uw modulebestand toe aan uw hoofdtoepassingsbestand.

var myLogModule = vereisen ('./ Local_module.js') myLogModule.name ('Edureka') myLogModule.domain ('Onderwijs')

Nu kunt u deze bestanden uitvoeren met de onderstaande opdracht:

knooppunt application.js

Ik zal u nu laten zien wat externe modules zijn.

Externe modules

U kunt de externe of 3rdpartymodules alleen door ze te downloaden via NPM. Deze modules zijn over het algemeen ontwikkeld door andere ontwikkelaars en zijn gratis te gebruiken. Enkele van de beste externe modules zijn express, reageren, slikken, mangoest, mokka enz.

Globaal laden van modules van derden:

npm install --g

Voeg uw modulebestand toe aan uw hoofdtoepassingsbestand:

npm install --save

JSON-bestand

De package.json-bestand in Node.js is het hart van de hele applicatie. Het is in feite het manifestbestand dat de metadata van het project bevat. Het begrijpen van en werken met dit bestand wordt dus erg belangrijk voor een succesvolle Node-projectontwikkeling.

Het package.json-bestand bestaat doorgaans uit de metadata van de applicatie, die verder is onderverdeeld in twee categorieën:

  1. Eigenschappen van metagegevens identificeren: Dit bestaat uit eigenschappen zoals de projectnaam, huidige moduleversie, licentie, auteur van het project, projectbeschrijving etc.
  1. Rechtstreeks naar bestand schrijven: U kunt de benodigde informatie rechtstreeks naar het bestand package.json schrijven en deze opnemen in uw project.

U bent inmiddels vertrouwd met de verschillende componenten van de Node JS-applicatie. In de volgende sectie van deze Node.js-zelfstudie zal ik enkele basisprincipes van Node Js delen, zodat we kunnen beginnen met de praktijk.

Node.js Basics

Omdat Node.js een JavaScript-framework is, gebruikt het de JavaScript-syntaxis. Als u JavaScript in detail wilt leren, kunt u hiernaar verwijzen . Voor nu zal ik je opfrissen met enkele basisprincipes van Node.js, zoals:

Gegevenstypen

Net als elke andere programmeertaal heeft Node.js verschillende datatypes, die verder zijn onderverdeeld in primitieve en niet-primitieve datatypes.

Primitieve gegevenstypen zijn:

  1. Draad
  2. Aantal
  3. Boolean
  4. Nul
  5. Ongedefinieerd

Niet-primitieve gegevenstypen zijn:

  1. Voorwerp
  2. Datum
  3. Array

Variabelen

Variabelen zijn entiteiten die waarden bevatten die in de loop van een programma kunnen variëren. Om een ​​variabele in Node.js te maken, moet u gebruik maken van een gereserveerd trefwoord var. U hoeft geen datatype toe te wijzen, aangezien de compiler dit automatisch kiest.

Syntaxis:

var varName = waarde

Operatoren

Node.js ondersteunt de onderstaande operators:

Type operator Operatoren
Rekenkundig +, -, /, *,%, ++, -
Toewijzing =, + =, - =, * =, / =,% =
Voorwaardelijk =?
Vergelijking ==, === ,! = ,! ==,>,> =,<, <=,
Logisch &&, || ,!
Bitsgewijs &, |, ^, ~,<>, >>>

Functies

Functies in Node.js is een codeblok met een naam en is geschreven om een ​​bepaalde taak uit te voeren. U moet de trefwoordfunctie gebruiken om het te maken. Een functie is doorgaans een proces in twee stappen. De eerste is het definiëren van de functie en de tweede is het aanroepen ervan. Hieronder staat de syntaxis voor het maken en aanroepen van een functie:

Voorbeeld:

// Een functie definiëren functie display_Name (voornaam, achternaam) {alert ('Hallo' + voornaam + '' + achternaam)} // De functie display_Name ('Park', 'Jimin') aanroepen

Voorwerpen

Een object is een niet-primitief gegevenstype dat meerdere waarden kan bevatten in termen van eigenschappen en methoden. Node.js-objecten zijn zelfstandige entiteiten omdat er geen concept van klasse is. U kunt op twee manieren een object maken:

  1. Object letterlijk gebruiken
  2. Met behulp van Object constructor

Voorbeeld:

// object met eigenschappen en methode var medewerker = {// eigenschappen voornaam: 'Minho', achternaam: 'Choi', leeftijd: 35, salaris: 50000, // methode getFullName: functie () {retourneer this.firstName + '' + this.lastName}}

Bestandssysteem

Om toegang te krijgen tot het fysieke bestandssysteem, maakt Node.js gebruik van de fs module die in feite zorgt voor alle asynchrone en synchrone bestands-I / O-bewerkingen. Deze module wordt geïmporteerd met de onderstaande opdracht:

var fs = vereisen ('fs')

Enkele van de algemene toepassingen voor de bestandssysteemmodules zijn:

  • Lees bestanden
    1. fs.readFile ()
var http = vereisen ('http') var fs = vereisen ('fs') http.createServer (functie (req, res) {fs.readFile ('script.txt', functie (err, data) {res.writeHead ( 200, {'Content-Type': 'text / html'}) res.write (data) res.end ()})}). Listen (8080)
  • Maak bestanden
    1. appendFile ()
    2. Open()
    3. writeFile ()
  • Update bestanden
    1. fs.appendFile ()
    2. fs.writeFile ()
  • Verwijder bestanden
    1. fs.unlink ()
  • Hernoem bestanden
    1. fs.rename ()

Met deze opdrachten kunt u dus vrijwel alle vereiste bewerkingen op uw bestanden uitvoeren. Laten we nu verder gaan met deze Node.js-zelfstudie en kijken wat gebeurtenissen zijn en hoe ze worden afgehandeld in Node.js.

Evenementen

Zoals ik al heb gezegd, zijn Node.js-toepassingen single threaded en gebeurtenisgestuurd. Node.js ondersteunt gelijktijdigheid omdat het gebeurtenisgestuurd is, en maakt dus gebruik van concepten zoals gebeurtenissen en callbacks. De aanroepen van de async-functie helpen Node.js bij het handhaven van gelijktijdigheid in de hele applicatie.

Kortom, in een Node.js-toepassing is er een hoofdlus die wacht en luistert naar gebeurtenissen, en zodra een gebeurtenis is voltooid, start deze onmiddellijk een callback-functie.

Onderstaand diagram geeft weer hoe de gebeurtenissen worden aangestuurd in Node.js.

Thread Model - Node.js Tutorial - Edureka

Een ding dat u hier moet opmerken, is dat, hoewel gebeurtenissen lijken op callback-functies, het verschil ligt in hun functionaliteiten. Wanneer een asynchrone functie retourneert, worden de callbacks van de resultaten aangeroepen, aan de andere kant werkt de gebeurtenisafhandeling volledig op het waarnemerpatroon. En in Node.js worden methoden die naar de gebeurtenissen luisteren de waarnemers genoemd. Op het moment dat een gebeurtenis wordt geactiveerd, wordt de luisteraarfunctie automatisch uitgevoerd. Gebeurtenismodules en de klasse EventEmitter bieden meerdere ingebouwde gebeurtenissen die worden gebruikt om gebeurtenissen aan gebeurtenislisteners te binden. Hieronder heb ik de syntaxis daarvoor opgeschreven.

Gebeurtenis aan een gebeurtenislistener binden

wat is functie-overbelasting in c ++
// Importeer gebeurtenissen module var my_Events = vereist ('events') // Maak een eventEmitter object var my_EveEmitter = new my_Events.EventEmitter ()

Event Handler aan een evenement binden

// Binding event en event handler my_EveEmitter.on ('eventName', eventHandler)

Een evenement afvuren

// Vuur een evenement my_EveEmitter.emit ('eventName')

Laten we nu proberen de dingen te implementeren die ik heb besproken in deze Node.js-gebeurtenissectie.De onderstaande code toont een eenvoudige weergave van de uitvoering van gebeurtenissen in Node.js.

var emitter = vereisen ('events'). EventEmitter function iterateProcessor (num) {var emt = nieuwe emitter () setTimeout (function () {for (var i = 1 i & lt = num i ++) {emt.emit ('BeforeProcess' , i) console.log ('Verwerkingsherhaling:' + i) emt.emit ('AfterProcess', i)}}, 5000) return emt} var it = iterateProcessor (5) it.on ('BeforeProcess', function ( info) {console.log ('Het proces starten voor' + info)}) it.on ('AfterProcess', functie (info) {console.log ('Verwerking voltooien voor' + info)

In de volgende sectie van deze Node.js Tutorial, zal ik je inzichten geven in een van de belangrijkste modules van Node.js, de HTTP-module.

verschil tussen java en klasse

HTTP-module

Over het algemeen wordt Node.js gebruikt voor het ontwikkelen van servertoepassingen. Maar met behulp van de module kunt u eenvoudig webservers maken die kunnen reageren op de verzoeken van de klant. Het wordt dus ook verwezen naar de webmodule en biedt modules zoals HTTP en verzoek die Node.js vergemakkelijken bij het verwerken van de serververzoeken.

U kunt deze module eenvoudig in uw Node.js-toepassing opnemen door de onderstaande code te schrijven:

var http = vereisen ('http')

Hieronder heb ik een code geschreven, die laat zien hoe een webserver wordt ontwikkeld in Node.js.

// aanroepen van http bibliotheek var http = vereisen ('http') var url = vereisen ('url') // server aanmaken var server = http.createServer (functie (req, res) {// inhoud header res.writeHead ( 200, ('Content-Type', 'text / html')) var q = url.parse (req.url, true) .query var txt = q.year + '' + q.month // stuur string naar antwoord res.end (txt)}) // 8082 toewijzen als luisterpoort server.listen (8082)

In het volgende gedeelte van deze Node.js-zelfstudie zal ik het hebben over Express.js, dat veel wordt gebruikt voor de ontwikkeling van webtoepassingen aan de serverzijde.

Express.js

Express.js is een framework dat bovenop Node.js is gebouwd en dat het beheer van de gegevensstroom tussen servers en routes in de server-side applicaties vergemakkelijkt. Het is een lichtgewicht en flexibel framework dat een breed scala aan functies biedt die nodig zijn voor het web en voor de ontwikkeling van mobiele applicaties.

Express.js is ontwikkeld op de middleware-module van Node.js genaamd aansluiten . De connect module maakt verder gebruik van http module om te communiceren met Node.js. Dus als u werkt met een van de op connect gebaseerde middleware-modules, dan kunt u gemakkelijk integreren met Express.js.

Niet alleen dit, enkele van de belangrijkste voordelen van Express.js zijn:

  • Maakt de ontwikkeling van webapplicaties sneller
  • Helpt bij het bouwen van mobiele applicaties en webapplicaties van single-page, multi-page en hybride types
  • Express biedt twee templating-engines, namelijk Jade en EJS
  • Express volgt de Model-View-Controller (MVC) -architectuur
  • Maakt integratie met databases zoals MongoDB, Redis, MySQL
  • Definieert een foutafhandeling van middleware
  • Vereenvoudigt configuratie en aanpassing eenvoudig voor de applicatie.

Met al deze functies neemt Express de verantwoordelijkheid voor het backend-gedeelte in de MEAN-stack. Mean Stack is de open-source JavaScript-softwarestack die wordt gebruikt voor het bouwen van dynamische websites en webapplicaties. Hier, GEMEEN betekent M. ongoDB, IS xpress.js, NAAR ngularJS en N ode.js.

Laten we nu een eenvoudig voorbeeld bekijken om te begrijpen hoe Express.js werkt met Node.js om ons werk te vergemakkelijken. Maar voordat u met Express.js gaat werken, moet u het in uw systeem installeren.

Om Express.js wereldwijd te installeren, kunt u het onderstaande commando gebruiken:

npm install -g express

Of, als u het lokaal in uw projectmap wilt installeren, moet u de onderstaande opdracht uitvoeren:

npm install express --save

Aangezien we klaar zijn met alle voorbereidingen, gaan we nu direct naar de praktische implementatie. Hier laat ik een eenvoudige gebruikersauthenticatietoepassing zien met Node.js en Express.js.

Node.js Tutorial Stap voor stap Applicatieontwikkeling met Express.js

Hiervoor hebben we onderstaande bestanden nodig:

  • package.json
  • script.js
  • keer bekeken
    • index.jade
    • login.jade
    • secure.jade
    • unauthorized.jade
    • welkom.jade
  • lib
    • routes.js

Dus laten we beginnen met package.json .

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

Vervolgens moet u het script.js .

var express = vereisen ('express') var http = vereisen ('http') var port = 8999 var app = express () const flash = vereisen ('connect-flash') var cookieParser = vereisen ('cookie-parser') var server = http.createServer (app) functie checkAuth (req, res, next) {console.log ('checkAuth' + req.url) // niet serveren / beveiligen voor degenen die niet zijn ingelogd if (req.url = == '/ secure' && (! req.session ||! req.session.authenticated)) {res.render ('unauthorized', {status: 403}) return} next ()} app.use (flash () ) app.use (cookieParser ()) app.use (express.session ({geheim: 'voorbeeld'})) app.use (express.bodyParser ()) app.use (checkAuth) app.use (app.router) app.set ('view engine', 'jade') app.set ('view options', {layout: false}) vereist ('./ lib / routes.js') (app) app.listen (poort) console .log ('Knooppunt luistert op poort% s', poort)

Maak nu een map met de naam view, waaronder u de jade-bestanden toevoegt die verantwoordelijk zijn voor verschillende paginaweergaven. Het eerste weergavebestand dat u moet maken, is index.jade .

!!! 5 html (lang = 'en') head title Gebruikersauthenticatie Voorbeeld body h1 center Authenticatiedemo met Express h3 Navigeer naar h4 ul li: a (href = '/ secure') Beveiligde inhoud li: a (href = '/ welcome') Welkomstpagina li: a (href = '/ logout') Logout

Maak nu het login.jade het dossier.

!!! 5 html (lang = 'en') head title Express authenticatie voorbeeld body h1 center Aanmelden bij dit Express authenticatie voorbeeld center p Gebruik gebruiker voor de gebruikersnaam en voorbij gaan aan voor het wachtwoord. form (method = 'post') p label (for = 'gebruikersnaam') E-mailadres invoer (type = 'text', name = 'gebruikersnaam', class = 'form-control', id = 'exampleInputPassword1', placeholder = ' Email ', style =' width: 400px ') p center label (for =' password ') Wachtwoordinvoer (type =' password ', name =' password ', class =' ​​form-control ', id =' exampleInputPassword1 ', placeholder = 'Wachtwoord', style = 'width: 400px') p center Verzenden - elk bericht in flash h4 (style = 'color: red') # {message}

De volgende stap is om het welkom.jade .

!!! 5 html (lang = 'en') head title Gebruikersauthenticatie Voorbeeld body h1 center Welkom bij de Edureka Tutorial!

Maak vervolgens het secure.jade het dossier.

!!! 5 html (lang = 'en') head title Express Authentication Voorbeeld body h1 center Hallo, veilige gebruiker. p Navigeer naar ul li: a (href = '/ secure') Beveiligde inhoud li: a (href = '/ welcome') Welkomstpagina li: a (href = '/ logout') Uitloggen

Maak nu het unauthorized.jade het dossier.

!!! 5 html (lang = 'en') head title Gebruikersauthenticatie Voorbeeld body h1 center Niet geautoriseerd p U bent niet geautoriseerd om deze pagina te bekijken. p Alsjeblieft ' doorgaan

Nu moet u een map maken en deze een naam geven lib . Maak nu een route.js bestand dat alle pagina's in kaart brengt.

var util = vereisen ('util') module.exports = functie (app) {app.get ('/', functie (req, res, volgende) {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) {// je zou hier graag een database-look-up of iets meer schaalbaars willen doen als (req.body.username && req.body.username === 'user' && req.body.password && req.body.password === 'pass') {req.session.authenticated = true res.redirect ('/ secure')} anders {req.flash ('error', 'Gebruikersnaam en wachtwoord zijn onjuist') res. redirect ('/ login')}}) app.get ('/ logout', function (req, res, next) {delete req.session.authenticated res.redirect ('/')})}

Als u deze code nu zelf wilt uitvoeren, kunt u deze hier downloaden: Node.js Tutorial PDF .

Hiermee komen we aan het einde van deze Node.js Tutorial. Ik hoop dat ik de concepten van Node.js vanaf de grond af heb kunnen uitleggen.

Als je deze “Node.js Tutorial ' relevant, bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze Node.js-zelfstudie en we nemen contact met u op.