Sobes.tech
Middle

Millised olid Node.js loomise peamised tehnilised ideed?

sobes.tech AI

Vastus AI-lt

Node.js põhimõtted:

  1. Mitteblokeeriv sisend/väljund (Async I/O): Kasutab asünkroonset operatsioonimudelit traditsioonilise blokeeriva asemel. See võimaldab Node.js-l tõhusalt töödelda suurt hulka samaaegseid ühendusi ilma iga päringu jaoks eraldi niiduta, mis oluliselt vähendab kontekstivahetuse ja mälu kasutamise kulusid.

    // Näide asünkroonsest faili lugemisest
    const fs = require('fs');
    
    fs.readFile('file.txt', 'utf8', (err, data) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(data);
    });
    
    console.log('See rida täidetakse enne faili lugemise lõpetamist'); // Näide mitteblokeerivast käitumisest
    
  2. Ühe niidiga arhitektuur: Node.js-i peamine sündmuste tsükkel (Event Loop) töötab ühes niidis päringute töötlemiseks. Mitteblokeeriv sisend/väljund võimaldab sellel ühel niidil mitte tühjalt seista ootamise ajal, vaid töödelda teisi ülesandeid, mis suurendab jõudlust suure koormuse korral.

  3. Sündmuste tsükkel (Event Loop): Põhimõtteline mehhanism, mis haldab asünkroonseid operatsioone. See pidevalt kontrollib sündmuste järjekorda ja saadab need töötlemiseks, kui kutsungite virn on vaba. libuv teek vastutab sündmuste tsükli teostamise ja operatsioonisüsteemiga suhtlemise eest.

  4. JavaScript kui peamine keel: JavaScripti kasutamine võimaldab arendajatel kasutada ühte keelt nii frontendis (brauseris), kui ka backendis (serveril), mis lihtsustab arendust ja koodi taaskasutust.

  5. Moodulite süsteem (CommonJS): Node.js-is on rakendatud moodulite süsteem (algselt põhines see CommonJS-l, nüüd toetab ka ES Modules), mis võimaldab jagada koodi väikesteks, taaskasutatavateks mooduliteks, mis aitab paremini korraldada ja hooldada koodi.

    // export.js
    exports.myFunction = () => {
        console.log('Tere, moodul!');
    };
    
    // import.js
    const myModule = require('./export');
    myModule.myFunction(); // Funktsiooni kutsumine imporditud moodulist
    
  6. V8 virtuaalmasin: Google’i kõrge jõudlusega V8 virtuaalmasin (sama, mida kasutatakse Chrome’i brauseris) kasutatakse JavaScript-koodi täitmiseks. See tagab suure kiiruse ja pideva jõudluse parandamise Google’i pingutuste kaudu.

  7. Fookus skaleeritavatele võrgus rakendustele: Node.js loodi algselt selleks, et hõlbustada kõrge jõudlusega ja skaleeritavate võrgurakenduste, nagu veebiserverite ja API-de, arendamist.