Водич за Ноде.јс - Комплетан водич за почетнике



Овај Водич за Ноде.јс говориће о основној архитектури, раду и различитим модулима Ноде.јс. Такође ће показати практичну примену Ноде.јс и Екпресс.јс.

Ако сте икада чули за Ноде.јс, можда бисте знали да је то један од најистакнутијих и најмоћнијих оквира ЈаваСцрипт-а. Од објављивања, наставља да се држи на ИТ тржишту. Чак и са увођењем новог и живахног као , , Метеор итд., Чини се да популарност Ноде.јс никад не престаје. Питате се зашто? Па, уз помоћ овог водича за Ноде.јс даћу вам потпун увид у то. Дакле, припремите се да се заљубите у Ноде.јс.

У овом водичу за Ноде.јс разговараћу о следећим темама:





Шта је Ноде.јс?

Ноде.јс је моћан оквир развијен на Цхроме-ов В8 ЈаваСцрипт механизам који компајлира ЈаваСцрипт директно у изворни машински код. То је лаган оквир који се користи за креирање веб апликација на страни сервера и проширује ЈаваСцрипт АПИ тако да нуди уобичајене функције на страни сервера. Генерално се користи за развој великих апликација, посебно за веб локације за стриминг видео записа, апликације за једну страницу и друге веб апликације. Ноде.јс чини употреба И-О модела који не блокира и управља догађајима, што га чини правим избором за апликације у стварном времену које захтевају податке.

Као и било који други програмски језик, ноде.јс користи пакете и модуле. То су библиотеке које садрже разне функције и увезене су из нпм (управитељ пакета чворова) у наш код и користе се у програмима. Неке од главних карактеристика које дефинишу Ноде.јс наведене су у наставку:



Карактеристике Ноде.јс

  1. Отвореног кода
    Ноде.јс је МИТ лиценца за оквир отвореног кода коју подржава велика заједница. Његова заједница је прилично активна допринела је додавању нових могућности апликацијама Ноде.јс.
  2. Једноставно и брзо
    Будући да је Ноде.јс изграђен на Гоогле Цхроме В8 ЈаваСцрипт Енгине-у, његове библиотеке су способне за брзо извршавање кода.
  3. Асинхрони
    Све библиотеке Ноде.јс су асинхроне, што значи да сервери засновани на Ноде.јс никада не чекају да АПИ пошаље одговор и пређе на следећи АПИ.
  4. Велика скалабилност
    Због механизма догађаја, Ноде.јс је изузетно скалабилан и помаже серверу у неблокирајућем одговору.
  5. Једнонитни
    Уз помоћ петље догађаја, Ноде.јс је у стању да следи модел са једним навојем. Ово омогућава једном програму да обрађује више захтева.
  6. Без баферовања
    Једна од главних функционалности Ноде.јс апликација је да никада не баферује податке.
  7. Цросс-Платформ
    Ноде.јс се може лако изградити и применити на различитим платформама попут Виндовс-а, МАЦ-а и Линук-а.

Идемо сада даље и видећемо како да применимо стварни код у прегледачу. Али пре тога, потребно је да преузмете и инсталирате у своје системе. Можете упутити мој други чланак да бисте сазнали цео текст Поступак инсталације Ноде.јс. .

Дакле, кренимо даље у овом водичу за Ноде.јс, где ћу говорити о најважнијој компоненти Ноде.јс, тј. Нпм.

НПМ (Ноде Пацкаге Манагер)

НПМ је скраћеница од Ноде Пацкаге Манагер који је, као што и само име говори, управитељ пакета за Ноде.јс пакете / модуле. Од верзије Ноде 0.6.0. па надаље, нпм је додан као подразумевани у инсталацији чвора. Штеди вас од муке да експлицитно инсталирате нпм.



НПМ у основи помаже на два начина:

претвори датум низа у датум у јави
  1. Пружа и хостује мрежна спремишта за ноде.јс пакете / модуле који се лако могу преузети и користити у нашим пројектима. Можете их пронаћи овде: нпмјс.цом
  2. Пружа услужни програм командне линије за инсталирање различитих Ноде.јс пакета, управљање Ноде.јс верзијама и зависностима пакета.

Али сада, сигурно се питате који су тачно ови модули и како нам помажу у изградњи апликација Ноде.јс. Па, у следећем одељку овог водича за Ноде.јс даћу вам потпун увид у Ноде.јс модуле.

Ноде.јс модули

Модули у Ноде.јс представљају различите функционалности повезане у једну или више ЈС датотека. Ови модули имају јединствени контекст, па стога никада не ометају нити загађују обим других модула.

Ови модули омогућавају поновну употребу кода и побољшавају једноставност употребе. Ноде.јс у основи пружа три врсте модула:

  1. Основни модули
  2. Локални модули
  3. Модули независних произвођача

Основни модул

Пошто је Ноде.јс врло лаган оквира, језгрени модули спајају апсолутно минимум функционалности. Ови модули се обично учитавају када Ноде процес започне своје извршавање. Све што треба да урадите је да увезете ове основне модуле да бисте их користили у свом коду.

Испод сам набројао неколико важних основних модула.

Основни модул Опис
хттп Садржи класе, методе и догађаје потребне за креирање Ноде.јс ХТТП сервера
урл Садржи методе за решавање УРЛ-а и рашчлањивање у Ноде-у
упитни низ Садржи методе за бављење низом упита Ноде
пут Садржи методе за бављење путањама датотека
фс Садржи класе, методе и догађаје за рад са И / О датотекама
Корисно Садржи корисне функције које могу бити корисне за програмере

Можете учитати свој основни модул, користећи доњи код:

вар модуле = рекуире ('модуле_наме')

Погледајмо сада, шта су „локални модули“.

Локални модули

Локални модули Ноде.јс су прилагођени модули које локално креира корисник / програмер у апликацији. Ови модули могу да укључују различите функционалности повезане у различите датотеке и фасцикле које се лако могу дистрибуирати у заједници Ноде.јс помоћу НПМ-а.

Ови модули се учитавају на сличан начин као и основни модули. Показаћемо вам како се то ради на основном примеру.

Креирајте своју прилагођену / локалну датотеку модуле.јс

вар детаил = {наме: фунцтион (наме) {цонсоле.лог ('Наме:' + наме)}, домаин: фунцтион (домаин) {цонсоле.лог ('Домаин:' + домаин)}} модуле.екпортс = детаил

Укључите датотеку модула у главну датотеку апликације.

вар миЛогМодуле = рекуире ('./ Лоцал_модуле.јс') миЛогМодуле.наме ('Едурека') миЛогМодуле.домаин ('Образовање')

Сада можете извршити ове датотеке помоћу наредбе испод:

ноде апплицатион.јс

Сада ћу вам показати шта су спољни модули.

Спољни модули

Можете користити спољни или 3рдмодули за забаву само преузимањем путем НПМ-а. Ове модуле углавном развијају други програмери и они су бесплатни за употребу. Неколико најбољих спољних модула су експресни, реакциони, гутљај, мунгос, мока итд.

Глобално учитавање независних модула:

нпм инсталл --г

Укључите датотеку модула у главну датотеку апликације:

нпм инсталл --саве

ЈСОН датотека

Тхе пацкаге.јсон датотеку у Ноде.јс је срж целокупне апликације. У основи је манифестна датотека која садржи метаподатке пројекта. Дакле, разумевање и рад са овом датотеком постаје веома важно за успешан развој Ноде пројекта.

Датотека пацкаге.јсон се генерално састоји од метаподатака апликације, који су даље категорисани у следеће две категорије:

пример логистичке регресије питхон
  1. Идентификовање својстава метаподатака: Састоји се од својстава као што су назив пројекта, тренутна верзија модула, лиценца, аутор пројекта, опис пројекта итд.
  1. Писање директно у датотеку: Потребне информације можете директно написати у датотеку пацкаге.јсон и укључити их у свој пројекат.

До сада сте већ упознали разне компоненте Ноде ЈС апликације. У следећем одељку овог водича за Ноде.јс делићу неке основе о Ноде Јс-у како бисмо могли да започнемо са рукама.

Основе Ноде.јс-а

С обзиром да је Ноде.јс ЈаваСцрипт оквир, он користи ЈаваСцрипт синтаксу. Ако желите детаљно научити ЈаваСцрипт, можете се позвати на ово . За сада ћу вам припремити неке основе Ноде.јс-а попут:

Типови података

Као и било који други програмски језик, Ноде.јс има различите типове података, који се даље сврставају у примитивне и непримитивне типове података.

Примитивни типови података су:

  1. Низ
  2. Број
  3. Боолеан
  4. Нула
  5. Недефинисан

Непримитивни типови података су:

  1. Предмет
  2. Датум
  3. Арраи

Променљиве

Променљиви су ентитети који садрже вредности које се могу разликовати током програма. Да бисте креирали променљиву у Ноде.јс, потребно је да користите резервисану кључну реч вар. Не морате да доделите тип података, јер ће га преводилац аутоматски одабрати.

Синтакса:

вар варНаме = вредност

Оператори

Ноде.јс подржава следеће операторе:

Тип оператора Оператори
Аритметика +, -, /, *,%, ++, -
Задатак =, + =, - =, * =, / =,% =
Условни =?
Поређење ==, === ,! = ,! ==,>,> =,<, <=,
Логичан &&, || ,!
Битно &, |, ^, ~,<>, >>>

Функције

Функције у Ноде.јс је блок кода који има име и написан је за постизање одређеног задатка. Да бисте је креирали, морате користити функцију кључне речи. Функција је обично процес у два корака. Прво је дефинисање функције, а друго позивање на њу. Испод је синтакса креирања и позивања функције:

Пример:

// Дефинисање функције функције дисплаи_Наме (фирстНаме, ластНаме) {алерт ('Хелло' + фирстНаме + '' + ластНаме)} // Позивање функције дисплаи_Наме ('Парк', 'Јимин')

Предмети

Објекат је непримитивни тип података који може да садржи више вредности у погледу својстава и метода. Ноде.јс објекти су самостални ентитети јер не постоји концепт класе. Објекат можете створити на два начина:

  1. Употреба Објецт литерал
  2. Коришћење Објецт конструктора

Пример:

// објект са својствима и методом вар запосленик = {// особине фирстНаме: 'Минхо', ластНаме: 'Цхои', старост: 35, плата: 50000, // метода гетФуллНаме: фунцтион () {ретурн тхис.фирстНаме + '' + тхис.ластНаме}}

Систем датотека

Да би приступио физичком систему датотека, Ноде.јс користи фс модул који у основи брине о свим асинхроним и синхроним И / О операцијама датотека. Овај модул се увози помоћу наредбе у наставку:

вар фс = рекуире ('фс')

Неке од општих употреба модула система датотека су:

  • Читајте датотеке
    1. фс.реадФиле ()
вар хттп = рекуире ('хттп') вар фс = рекуире ('фс') хттп.цреатеСервер (фунцтион (рек, рес) {фс.реадФиле ('сцрипт.ткт', фунцтион (ерр, дата) {рес.вритеХеад ( 200, {'Цонтент-Типе': 'тект / хтмл'}) рес.врите (дата) рес.енд ()})}). Листен (8080)
  • Направите датотеке
    1. аппендФиле ()
    2. отворен ()
    3. вритеФиле ()
  • Ажурирајте датотеке
    1. фс.аппендФиле ()
    2. фс.вритеФиле ()
  • Брисање датотека
    1. фс.унлинк ()
  • Преименујте датотеке
    1. фс.ренаме ()

Дакле, помоћу ових наредби можете прилично добро извршити све потребне радње на датотекама. Кренимо сада даље са овим водичем за Ноде.јс и погледајмо шта су догађаји и како се њима рукује у Ноде.јс.

Догађаји

Као што сам већ поменуо, апликације Ноде.јс су једнонитне и воде се догађајима. Ноде.јс подржава паралелност јер је покретана догађајима и на тај начин користи концепте попут догађаја и повратних позива. Позиви функције асинц помажу Ноде.јс-у у одржавању паралелности у целој апликацији.

У основи, у Ноде.јс апликацији постоји главна петља која чека и ослушкује догађаје, а када се било који догађај доврши, он одмах покреће функцију повратног позива.

Испод дијаграм представља како се догађаји покрећу у Ноде.јс.

Модел нити - Водич за Ноде.јс - Едурека

Овде морате имати на уму да, иако догађаји изгледају слично функцијама повратног позива, али разлика лежи у њиховим функционалностима. Када асинхрона функција врати своје резултате, са друге стране се позивају повратни позиви, руковање догађајима у потпуности функционише на обрасцу посматрача. А у Ноде.јс методе које ослушкују догађаје називају се посматрачима. У тренутку када се догађај покрене, његова функција слушача аутоматски почиње да се извршава. Модули догађаја и класа ЕвентЕмиттер пружају више уграђених догађаја који се користе за повезивање догађаја са слушаоцима догађаја. У наставку сам записао синтаксу за то.

Везивање догађаја са слушаоцем догађаја

// Увоз модула догађаја вар ми_Евентс = рекуире ('евентс') // Стварање објекта евентЕмиттер вар ми_ЕвеЕмиттер = нови ми_Евентс.ЕвентЕмиттер ()

Везивање руковаоца догађајима за догађај

// Везивање догађаја и обрађивача догађаја ми_ЕвеЕмиттер.он ('евентНаме', евентХандлер)

Отпуштање догађаја

// Покретање догађаја ми_ЕвеЕмиттер.емит ('евентНаме')

Покушајмо сада да применимо ствари о којима сам говорио у овом одељку Ноде.јс догађаја.Доњи код приказује једноставан приказ извршења догађаја у Ноде.јс.

вар емитер = рекуире ('евентс'). ЕвентЕмиттер функција итератеПроцессор (нум) {вар емт = нев емиттер () сетТимеоут (фунцтион () {фор (вар и = 1 и & лт = нум и ++) {емт.емит ('БефореПроцесс' , и) цонсоле.лог ('Итерација обраде:' + и) емт.емит ('АфтерПроцесс', и)}}, 5000) ретурн емт} вар ит = итератеПроцессор (5) ит.он ('БефореПроцесс', фунцтион ( инфо) {цонсоле.лог ('Покретање процеса за' + инфо)}) ит.он ('АфтерПроцесс', функција (инфо) {цонсоле.лог ('Завршавање обраде за' + инфо)

У следећем одељку овог водича за Ноде.јс даћу вам увид у један од најважнијих модула Ноде.јс под називом ХТТП модул.

ХТТП модул

Генерално, Ноде.јс се користи за развој апликација заснованих на серверу. Али помоћу модула можете лако створити веб сервере који могу одговорити на захтеве клијента. Стога се такође позива на Веб модул и пружа модуле попут ХТТП-а и захтева који олакшавају Ноде.јс у обради захтева сервера.

Овај модул можете лако укључити у своју апликацију Ноде.јс само тако што ћете написати доњи код:

вар хттп = рекуире ('хттп')

Испод сам написао код који показује како је Веб сервер развијен у Ноде.јс.

// позивање хттп библиотеке вар хттп = рекуире ('хттп') вар урл = рекуире ('урл') // стварање сервера вар сервер = хттп.цреатеСервер (фунцтион (рек, рес) {// постављање заглавља садржаја рес.вритеХеад ( 200, ('Цонтент-Типе', 'тект / хтмл')) вар к = урл.парсе (рек.урл, труе) .куери вар ткт = к.иеар + '' + к.монтх // пошаљи низ на одговор рес.енд (ткт)}) // додељује 8082 као порт за преслушавање сервера сервер.листен (8082)

У следећем одељку овог водича за Ноде.јс говорићу о Екпресс.јс-у који се у великој мери користи за развој веб апликација на страни сервера.

Екпресс.јс

Екпресс.јс је оквир изграђен на врху Ноде.јс који олакшава управљање протоком података између сервера и рута у апликацијама на страни сервера. То је лаган и флексибилан оквир који пружа широк спектар функција потребних за веб, као и за развој мобилних апликација.

Екпресс.јс је развијен на међупрограмском модулу Ноде.јс под називом повезати . Модул за повезивање даље користи хттп модул за комуникацију са Ноде.јс. Дакле, ако радите са било којим од модула међуопреме базираним на повезивању, онда можете лако да се интегришете са Екпресс.јс.

Не, само ово, неколико главних предности Екпресс.јс-а су:

  • Убрзава развој веб апликација
  • Помаже у изградњи мобилних и веб апликација једностраних, вишестраних и хибридних типова
  • Екпресс нуди два покретачка механизма, наиме, Јаде и ЕЈС
  • Екпресс следи архитектуру Модел-Виев-Цонтроллер (МВЦ)
  • Омогућава интеграцију са базама података као што су МонгоДБ, Редис, МиСКЛ
  • Дефинише грешку при руковању међупрограмом
  • Поједностављује конфигурацију и прилагођавање лако за апликацију.

Уз све ове функције, Екпресс преузима одговорност за позадински део у МЕАН стеку. Меан Стацк је ЈаваСцрипт софтвер отвореног кода који се користи за израду динамичких веб локација и веб апликација. Ево, ЗНАЧИТИ означава М. онгоДБ, ИС кпресс.јс, ДО нгуларЈС, и Н. оде.јс.

Погледајмо сада једноставан пример да бисмо разумели како Екпресс.јс ради са Ноде.јс-ом како би нам олакшао посао. Али пре него што започнете рад са Екпресс.јс-ом, морате га инсталирати у свој систем.

Да бисте Екпресс.јс инсталирали глобално, можете користити следећу команду:

нпм инсталл -г екпресс

Или, ако га желите инсталирати локално у директоријум пројекта, морате извршити наредбу испод:

нпм инсталл екпресс --саве

Пошто смо завршили са свим припремама, пређимо сада директно на практичну примену. Овде ћу приказати једноставну апликацију за проверу идентитета корисника помоћу Ноде.јс и Екпресс.јс.

Водич за Ноде.јс Корак по корак Развој апликација са Екпресс.јс

За ово ће нам требати датотеке у наставку:

  • пацкаге.јсон
  • сцрипт.јс
  • погледа
    • индек.јаде
    • логин.јаде
    • сигуран.жад
    • неовлашћено.жад
    • добродошли.јаде
  • либ
    • роутес.јс

Дакле, почнимо са пацкаге.јсон .

{'аутхор': 'Едурека', 'наме': 'Екпресс_Демо', 'десцриптион': 'Екпресс витх Ноде.јс', 'версион': '0.0.0', 'сцриптс': {'старт': 'ноде сцрипт.јс '},' енгине ': {' ноде ':' ~ 0.4.12 '},' депенденциес ': {' цоннецт-фласх ':' ^ 0.1.1 ',' цоокие-парсер ':' ^ 1.4 .3 ',' екпресс ':' ^ 3.21.2 ',' јаде ':' ^ 0.20.3 ',' рек-фласх ':' 0.0.3 '},' девДепенденциес ': {}}

Даље, треба да креирате сцрипт.јс .

вар екпресс = рекуире ('екпресс') вар хттп = рекуире ('хттп') вар порт = 8999 вар апп = екпресс () цонст фласх = рекуире ('цоннецт-фласх') вар цоокиеПарсер = рекуире ('цоокие-парсер') вар сервер = хттп.цреатеСервер (апп) функција цхецкАутх (рек, рес, нект) {цонсоле.лог ('цхецкАутх' + рек.урл) // не служи / не обезбеђује онима који нису пријављени ако (рек.урл = == '/ сецуре' && (! рек.сессион ||! рек.сессион.аутхентицатед)) {рес.рендер ('неовлашћено', {статус: 403}) ретурн} нект ()} апп.усе (фласх () ) апп.усе (цоокиеПарсер ()) апп.усе (екпресс.сессион ({сецрет: 'екампле'})) апп.усе (екпресс.бодиПарсер ()) апп.усе (цхецкАутх) апп.усе (апп.роутер) апп.сет ('виев енгине', 'јаде') апп.сет ('виев оптионс', {лаиоут: фалсе}) рекуире ('./ либ / роутес.јс') (апп) апп.листен (порт) конзола .лог ('Чвор слуша на порту% с', порт)

Сада креирајте фасциклу са именом виев, у коју ћете додавати жад датотеке које ће бити одговорне за различите приказе страница. Прва датотека приказа коју треба да направите је индек.јаде .

!!! 5 хтмл (ланг = 'ен') титле хеад Усер Аутхентицатион Пример тела х1 центер Аутхентицатион Демо користећи Екпресс х3 Идите до х4 ул ли: а (хреф = '/ сецуре') Заштићен садржај ли: а (хреф = '/ велцоме') Страница добродошлице ли: а (хреф = '/ логоут') Одјава

Сада креирајте логин.јаде датотека.

!!! 5 хтмл (ланг = 'ен') хеад титле Пример експресне потврде идентитета боди х1 центер Пријавите се у овај пример примера експресне аутентификације п Користите корисник за корисничко име и проћи за лозинку. форм (метход = 'пост') п лабел (фор = 'усернаме') Унос адресе е-поште (типе = 'тект', наме = 'усернаме', цласс = 'форм-цонтрол', ид = 'екамплеИнпутПассворд1', плацехолдер = ' Е-пошта ', стиле =' видтх: 400пк ') п централна ознака (за =' лозинка ') Унос лозинке (типе =' пассворд ', наме =' пассворд ', цласс =' форм-цонтрол ', ид =' екамплеИнпутПассворд1 ', плацехолдер = 'Лозинка', стиле = 'видтх: 400пк') п центер Субмит - свака порука у флешу х4 (стиле = 'цолор: ред') # {мессаге}

Следећи корак је стварање добродошли.јаде .

!!! 5 хтмл (ланг = 'ен') хеад титле Пример аутентификације корисника боди боди х1 центер Добродошли у туториал Едурека!

Затим креирајте сигуран.жад датотека.

!!! 5 хтмл (ланг = 'ен') хеад титле Екпресс Аутхентицатион Пример тела х1 центер Здраво, сигурни корисниче. п Дођите до ул ли: а (хреф = '/ сецуре') Сигурни садржај ли: а (хреф = '/ велцоме') Страница добродошлице ли: а (хреф = '/ логоут') Одјава

Сада креирајте неовлашћено.жад датотека.

!!! 5 хтмл (ланг = 'ен') наслов главе Ауторизација корисника Пример тела х1 центар Неовлашћено п Неовлашћено је да видите ову страницу. п Молим те ' наставиће се

Сада треба да направите фасциклу и да јој дате име либ . Сада креирајте роуте.јс датотека која ће мапирати све странице.

вар утил = рекуире ('утил') модуле.екпортс = фунцтион (апп) {апп.гет ('/', фунцтион (рек, рес, нект) {рес.рендер ('индек')}) апп.гет (' / добродошли ', функција (рек, рес, нект) {рес.рендер (' велцоме ')}) апп.гет (' / сецуре ', фунцтион (рек, рес, нект) {рес.рендер (' сецуре ')} ) апп.гет ('/ логин', фунцтион (рек, рес, нект) {рес.рендер ('логин', {фласх: рек.фласх ()})}) апп.пост ('/ логин', фунцтион ( рек, рес, нект) {// можда бисте желели да потражите базу података или нешто више прилагодљиво овде ако (рек.боди.усернаме && рек.боди.усернаме === 'усер' && рек.боди.пассворд && рек.боди.пассворд === 'пасс') {рек.сессион.аутхентицатед = труе рес.редирецт ('/ сецуре')} елсе {рек.фласх ('грешка', 'Корисничко име и лозинка су нетачни') рес. редирецт ('/ логин')}}) апп.гет ('/ логоут', фунцтион (рек, рес, нект) {делете рек.сессион.аутхентицатед рес.редирецт ('/')})}

Сада, ако желите сами да извршите овај код, можете га преузети одавде: Водич за Ноде.јс ПДФ .

претворити низ у датум у Јава

Овим смо дошли до краја овог водича за Ноде.јс. Надам се да сам успео да објасним концепте Ноде.јс-а од темеља.

Ако сте пронашли овај „Водич за Ноде.јс ”Релевантно, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250 000 задовољних ученика раширених широм света.

Имате питање за нас? Молимо вас да га помињете у одељку за коментаре овог водича за Ноде.јс и јавићемо вам се.