Откријте моћ Монгоосеа и како га можете користити за управљање подацима за једноставну веб апликацију.
Нект.јс је свестрани ЈаваСцрипт оквир са пуним стеком који је изграђен на врху Реацт-а, подржавајући његове главне карактеристике као што су ЈСКС, компоненте и куке. Неке од кључних карактеристика Нект.јс-а укључују рутирање засновано на датотекама, ЦСС у ЈС-у и приказивање на страни сервера.
Једна значајна способност Нект.јс-а је његова способност да се неприметно интегрише са различитим позадинским технологијама као што је Монгоосе, што вам омогућава да лако ефикасно управљате подацима.
Са Монгоосе-ом можете лако да дефинишете ефикасан РЕСТ АПИ из Нект.јс апликације за складиштење и преузимање података из МонгоДБ базе података.
Нект.јс: ЈаваСцрипт оквир са пуним стеком
За разлику од Реацт-а, Нект.јс се сматра комплетним веб оквиром јер пружа комплетно решење за изградњу веб апликација које се приказују на страни сервера.
То је зато што нуди функције које омогућавају рад на фронт-енд и бацк-енд апликације из једног директорија пројекта. Не морате нужно да подесите посебну фасциклу позадинског пројекта да бисте имплементирали функционалност на страни сервера, посебно за мале апликације.
Међутим, колико год Нект.јс рукује неким позадинским функцијама, да бисте направили велике апликације са пуним стеком, можда бисте желели да га комбинујете са наменским позадинским оквиром као што је Екпресс.
Неке од основних функција које Нект.јс-у дају његове пуне могућности укључују:
- Рендеровање на страни сервера: Нект.јс пружа уграђену подршку за могућности приказивања на страни сервера. У суштини то значи да када клијент пошаље ХТТП захтеве серверу, сервер обрађује захтеве и одговара са потребним ХТМЛ садржајем за сваку страницу која ће се приказати у претраживачу.
- Рутирање: Нект.јс користи систем рутирања заснован на страницама за дефинисање и управљање различитим рутама, руковање корисничким уносима и креирање динамичких страница без потребе да се ослања на библиотеке трећих страна. Поред тога, лако је повећати величину пошто је додавање нових рута једноставно као додавање нове странице као што је абоут.јс у директоријум страница.
- АПИ крајње тачке: Нект.јс пружа уграђену подршку за могућности на страни сервера које се користе за креирање АПИ крајњих тачака које управљају ХТТП захтевима и враћају податке. Ово олакшава изградњу позадинске функционалности без потребе за постављањем засебног сервера користећи наменски позадински оквир као што је Екпресс. Међутим, важно је напоменути да је Нект.јс првенствено фронт-енд веб оквир.
Подесите МонгоДБ базу података
Започети, поставите МонгоДБ базу података. Алтернативно, можете брзо да покренете МонгоДБ базу података бесплатно конфигурисање МонгоДБ кластера у облаку. Када покренете своју базу података, копирајте УРИ стринг везе са базом података.
Овде можете пронаћи код овог пројекта ГитХуб спремиште.
Подесите Нект.јс пројекат
Креирајте директоријум за нови пројекат и цд у то:
мкдир нектјс-пројецт
цд нектјс-пројецт
Затим инсталирајте Нект.јс:
нпк цреате-нект-апп нектјс-монгодб
Када се процес инсталације заврши, инсталирајте Монгоосе као зависност.
нпм инсталл монгоосе
Коначно, у основном директоријуму вашег пројекта, креирајте нову .енв датотеку која ће држати стринг за везу са базом података.
НЕКСТ_ПУБЛИЦ_МОНГО_УРИ = „низ везе УРИ базе података“
Конфигуришите везу са базом података
У срц директоријум, креирајте нови фолдер и дајте му име утилс. Унутар ове фасцикле направите нову датотеку под називом дбЦонфиг.јс и додајте му следећи код:
увоз Мунгос из'Мунгос';
конст цоннецтМонго = асинц () => монгоосе.цоннецт (процесс.енв. НЕКСТ_ПУБЛИЦ_МОНГО_УРИ);
извозУобичајено цоннецтМонго;
Дефинишите моделе података
Модели података дефинишу структуру података који ће бити ускладиштени, укључујући типове података и односе између података.
МонгоДБ складишти податке у документима сличним ЈСОН-у пошто је то а НоСКЛ база података. Монгоосе пружа начин да се дефинише како подаци са Нект.јс клијената треба да се чувају и приступају из базе података.
У директоријуму срц, креирајте нову фасциклу и име у моделима. Унутар ове фасцикле направите нову датотеку под називом усерМодел.јс, и додајте код испод:
увоз { Шема, модел, модели } из'Мунгос';
конст усерСцхема = Нова Шема({
име: Низ,
емаил: {
тип: Низ,
потребан: истина,
јединствено: истина,
},
});конст Корисник = модели. Корисник || модел ('Корисник', усерСцхема);
извозУобичајено Корисник;
Креирајте крајње тачке АПИ-ја
За разлику од других фронт-енд оквира, Нект.јс пружа уграђену подршку за управљање АПИ-јем. Ово поједностављује процес креирања АПИ-ја јер их можете дефинисати директно у Нект.јс пројекту уместо да постављате посебан сервер.
Када дефинишете АПИ руте унутар пагес/апи директоријума, Нект.јс генерише АПИ крајње тачке за сваку од датотека у овом директоријуму. На пример, ако креирате усерВ1/усер.јс, Нект.јс ће креирати крајњу тачку доступном на http://localhost: 3000/апи/усерВ1/усер.
Унутар пагес/апи, креирајте нови фолдер и назовите га усерВ1. Унутар ове фасцикле направите нову датотеку под називом усер.јс, и додајте код испод:
увоз цоннецтМонго из'../../../утилс/дбЦонфиг';
увоз Корисник из'../../../моделс/усерМодел';/**
* @парам {увоз('следећи').НектАпиРекуест} рек
* @парам {увоз('следећи').НектАпиРеспонсе} рес
*/
извозУобичајеноасинцфункцијаусерАПИ(рек, рес) {
покушати {
конзола.Пријава('ПОВЕЗИВАЊЕ СА МОНГО');
чекати цоннецтМонго();
конзола.Пријава('ПОВЕЗАНО СА МОНГО');
ако (рек.метход 'ПОШТА') {
конзола.Пријава('КРЕИРАЊЕ ДОКУМЕНТА');
конст цреатедУсер = чекати Усер.цреате (рек.боди);
конзола.Пријава('КРЕИРАНИ ДОКУМЕНТ');
рес.јсон({ цреатедУсер });
} другоако (рек.метход 'ДОБИТИ') {
конзола.Пријава('ПРЕУЗИМАЊЕ ДОКУМЕНТА');
конст фетцхедУсерс = чекати Усер.финд({});
конзола.Пријава('ПРЕУЗЕТИ ДОКУМЕНТИ');
рес.јсон({ фетцхедУсерс });
} друго {
бацитиНоваГрешка(`Неподржани ХТТП метод: ${рек.метход}`);
}
} улов (грешка) {
конзола.лог (грешка);
рес.јсон({ грешка });
}
}
Овај код имплементира АПИ крајњу тачку за складиштење и преузимање корисничких података из МонгоДБ базе података. Он дефинише а усерАПИ функција која узима два параметра: рек и рес. Они представљају долазни ХТТП захтев и одлазни ХТТП одговор, респективно.
Унутар функције, код се повезује са МонгоДБ базом података и проверава ХТТП метод долазног захтева.
Ако је метод ПОСТ захтев, код креира нови кориснички документ у бази података користећи Креирај методом. Насупрот томе, ако је а ДОБИТИ захтева, код преузима све корисничке документе из базе података.
Конзумирање крајњих тачака АПИ-ја
Додајте код испод у пагес/индек.јс фајл:
- Направите ПОСТ захтев крајњој тачки АПИ-ја за складиштење података у бази података.
увоз стилова из'@/стилес/Хоме.модуле.цсс';
увоз { усеСтате } из'реаговати';извозУобичајенофункцијаКућа() {
конст [наме, сетНаме] = усеСтате('');
конст [емаил, сетЕмаил] = усеСтате('');
конст [усерсРесултс, сетУсерсРесултс] = усеСтате([]);конст цреатеУсер = асинц () => {
покушати {
конст цреатедУсер = чекати донеси ('/апи/усерВ1/усер', {
метод: 'ПОШТА',
заглавља: {
'Тип садржаја': 'апплицатион/јсон',
},
тело: ЈСОН.стрингифи({
име,
емаил,
}),
}).онда((рес) => рес.јсон());
конзола.Пријава('КРЕИРАНИ ДОКУМЕНТ');сетНаме('');
сетЕмаил('');конзола.лог (цреатедУсер);
} улов (грешка) {
конзола.лог (грешка);
}
}; - Дефинишите функцију за преузимање корисничких података упућивањем ХТТП захтева до ГЕТ крајње тачке.
конст дисплаиУсерс = асинц () => {
покушати {
конзола.Пријава('ПРЕУЗИМАЊЕ ДОКУМЕНТА');
конст фетцхедУсерс = чекати донеси ('/апи/усерВ1/усер').онда((рес) =>
рес.јсон()
);
конзола.Пријава('ПРЕУЗЕТИ ДОКУМЕНТИ');
сетУсерсРесултс (фетцхедУсерс);
конзола.лог (усерсРесултс)
} улов (грешка) {
конзола.лог (грешка);
}
}; - На крају, рендерујте елемент обрасца са пољима за унос текста и дугмадима за слање и приказ корисничких података.
повратак (
<>
Коначно, наставите и покрените развојни сервер да ажурирате промене и идите до њега http://localhost: 3000 у вашем претраживачу.
нпм рун дев
Коришћење Нект.јс у апликацијама
Нект.јс је фантастична опција за прављење сјајних веб апликација, било да радите на споредном пројекту или на великом веб решењу. Нуди низ функција и могућности које поједностављују процес креирања учинковитих и скалабилних производа.
Иако је то првенствено робустан оквир на страни клијента, такође можете да искористите његове могућности на страни сервера да брзо покренете позадинску услугу.