Какво е Node.js? Това среда ли е? Време за изпълнение ли е? Език ли е, какво е? Това са всички онези неща. По принцип това е среда за изпълнение на JavaScript извън браузъра. Създаден е от Ryan Dhal през 2009 г. Това е среда за изпълнение с отворен код и когато казвам време за изпълнение, мисля за изпълним файл. Това е хост среда за изпълнение на JavaScript код от страната на сървъра.

Така че, ако пишем код в bash, ние сме в bash runtime. Ако пишем код в Ruby, ние сме в Ruby runtime. Това е като собствено време за изпълнение, собствена среда, която е самокапсулирана. Построен е на Chrome’s V8 JavaScript engine.

Ако не знаете какъв е двигателят V8 на Chrome, почти всеки браузър има собствен JavaScript двигател, който анализира и изпълнява JavaScript. Енджинът на Chrome се нарича V8 и това е само техният компилатор, който те използват, за да компилират JavaScript до машинен код, така че действителната машина да може да го прочете. V8 е един от най-добрите там. Създателят на Node реши да го извади от Chrome, да го изтръгне и да го постави на друго място. Ето защо можем да напишем Node.js в JavaScript, защото е изграден на същия двигател.

Node.js архитектура

Node.js използва архитектурата Single Threaded Event Loop за работа с множество едновременни клиенти. Моделът за обработка на Node се основава на JavaScript event-based model заедно с JavaScript callback mechanism.

Има няколко предимства на тази архитектура.

  1. С използването на Event Queue and Thread Pool сървърът Node.js позволява ефективна обработка на голям брой входящи заявки.
  2. Цикълът на събития обработва всички заявки една по една, така че няма нужда да създавате множество нишки. Вместо това, една нишка е достатъчна за обработка на блокираща входяща заявка.
  3. Node.js сървърът през повечето време изисква по-малко ресурси и памет поради начина, по който обработва входящите заявки. Тъй като заявките се обработват една по една, цялостният процес става по-малко натоварващ паметта.

Браузър срещу възел

Както казах, и двете са JavaScript. Chrome използва V8, Node използва V8, но има някои разлики като технологиите, какво може да се направи и начина, по който мислите за нещата. Така че нека поговорим за това мислене.

За браузъри е за създаване на интерактивни приложения за мрежата. Визуални неща, които хората виждат и кликват върху тях и взаимодействат с тях. Node не е за това, няма визуална графика. Тук няма нищо визуално, имаме терминал, това е. Можем да мислим за Node буквално като за чиста логика. Няма UI, няма CSS. Няма анимации, това е просто чиста логика.

Има глобален обект, наречен window за JavaScript код в браузъра. В Node няма прозорец, но има усещане за global object. Така че нека поговорим за глобалните.

По принцип Node ни дава полезни глобали. Ще говорим за няколко от тях и те са много, но това са едни от най-важните.

Единият се казва process. Той включва неща за машината, колко ядра има, нейното име, пътища и местоположения, променливи на средата. Всички различни видове неща, които този процес би имал. И ще се промени в зависимост от това на каква машина работи вашето приложение

Require е друг важен, вероятно най-важният. Това е функция за намиране и използване на модули в текущия модул. Ще говорим за модулите по-късно в тази статия. Node.js използва нещо, наречено CommonJS. Това е модел на модул, който някой е създал преди много време и Node.js го е приел. И начинът, по който бихте го използвали, е, че трябва да съберете модул в текущия модул, като използвате функцията за изискване.

Това е версията на JavaScript за импортиране, тя се нарича просто изискване. Или трябва да кажа, че това е версията на Node за импортиране, която се нарича изискване.

Модули в Node.js

Модулът в Node.js е проста или сложна функционалност, организирана в един или множество JavaScript файлове, които могат да се използват повторно в приложението Node.

Всеки модул в Node.js има свой собствен контекст, така че не може да пречи на други модули или да замърсява глобалния обхват. Освен това всеки модул може да бъде поставен в отделен .js файл в отделна папка.