Основи на Node JS & Express (III). Node JS & Основи на Express (III) Създаване на HTML формуляр и получаване на данни

Тази статия е за начинаещи разработчици и всеки, който се интересува от работа с Node js Express. За да овладеете, трябва да знаете основите на JavaScript:

Какво е Node.js?

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

Node.js ви позволява да пишете JavaScript код от страната на сървъра. Сега може би се чудите как? JavaScript е език, който работи в браузъра. Браузърът взема JavaScript код и го компилира в команди. Създателят на Node.js взе двигателя на Chrome и създаде среда за изпълнение ( време на изпълнение), за да работи на сървъра. Това е средата, в която езикът може да бъде интерпретиран. И така, какво имаме сега? Начин за писане на JavaScript в бекенда.

Що се отнася до определението, може би се чудите какво означава терминът "асинхронен" в този контекст. JavaScript е език с една нишка. Така че не искате събитията да прекъсват основната нишка на изпълнение. Това означава обработка на събития без прекъсване на основната нишка.

Node.js се основава на тази неблокираща реализация, което го прави един от най-бързите инструменти за изграждане на уеб приложения. В следния пример "Hello World" много връзки могат да се обработват едновременно. Всяка връзка задейства обратно извикване.

Този пример за Node js Express има шест лесни стъпки.

  1. Инсталирайте Node.js за вашата платформа (MacOS, Windows или Linux)

Node.js

Node.js® е среда за изпълнение на JavaScript, вградена във V8 JavaScript Engine за Chrome. Node.js използва управляван от събития, неблокиращ I/O...

Първата стъпка е да получите копие на JavaScript на вашата локална машина. Въведете nodejs.org в адресната лента на браузъра си или щракнете върху връзката и сте готови. Стартовият прозорец трябва веднага да ви даде това, което искате. Когато стартирам Ubuntu на моята машина, се показва подходящата версия на Node.js за моята операционна система. Изтеглете и го инсталирайте. Това ще ви предостави инструментите, от които се нуждаете, за да стартирате сървъра на вашата локална машина:

  1. Отворете командния ред и въведете

mkdir myapp cd myapp

Тези команди Node js Express Post са универсални за всяка операционна система. Първият ще създаде нова директория в директорията, в която се намирате в момента, mkdir = "make directory" . Последният ще се промени в тази новосъздадена директория, cd = "промяна на директория".

  1. Стартирайте проекта си и го обвържете с npm

След като създадете директория, наречена myapp, ще трябва да стартирате проекта и да го свържете с npm.

Npm е съкращение от мениджър на пакети на възли ( Мениджър на пакети на възли). Това е мястото, където се намират всички пакети Node. Те могат да се разглеждат като пакети от код, модули, които изпълняват специфична функция. Ние използваме интерфейса за програмиране на приложения, API, предоставен от тези модули.

Модулите от своя страна действат като черни кутии с бутони и лостове, които можете да натискате и дърпате, за да получите желания резултат. Изпълнението на командата по-долу ще стартира вашия проект:

Той създава файл package.json в папката myapp. Файлът съдържа връзки към всички npm пакети, които са заредени в проекта.

Командата ще ви подкани да въведете няколко опции. Можете да влезете в пътя си през всички тях, с изключение на този:

входна точка: (index.js)

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

  1. Инсталирайте Express в директорията myapp

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

Докато сте в директорията myapp, изпълнете:

npm install express --save

Командата за инсталиране ще продължи да търси пакета с файлове Node js Express за инсталиране. Инсталирайте го във вашия проект.

Папката node_modules вече е създадена в основата на вашия проект. Добавянето на -save позволява пакетът да бъде запазен в списък със зависимости, разположен в package.json в директорията myapp.

Express предоставя набор от инструменти за изграждане и изпълнение на уеб приложение. Express стана толкова популярен, че вече е стандарт в по-голямата част от Node.js приложенията. Силно препоръчвам да използвате Express.

  1. Стартирайте текстов редактор и създайте файл, наречен app.js

След като инсталирате Express Node, добавете следния код към генерирания файл:

var express = require("express"); var app = express(); app.get("/", функция (req, res) ( res.send("Здравей свят!"); )); app.listen(3000, функция () ( console.log("Примерно приложение слуша на порт 3000!"); ));

Тук ще трябва да използвате пакета, който е инсталиран наскоро. Първият ред декларира променлива, която ще съдържа експресния модул, разположен в папката node_modules.

Модулът е функция. Присвояването на извикване на функция към друга променлива осигурява достъп до предварително дефиниран набор от инструменти, които улесняват работата. Можете да мислите за временно приложение като за обект, чиито методи използвате, за да създадете действителната програма.

Методът слушател стартира сървъра и слуша на порт 3000 за връзки. Той отговаря „Здравей свят! ' за GET заявки към основния URL (/) . За всеки друг път той ще отговори с 404 Not Found.

  1. Стартирайте приложението

Въведете командата:

След като изпълните командата, въведете http://localhost:3000/ в браузъра си, за да видите резултата. Трябва също да видите " Примерно приложение слуша на порт 3000».

  • Превод

За начинаещ програмист разработването за Node.js може да бъде кошмар. Причината за това е гъвкавостта на тази платформа и липсата на ясни насоки. Но всъщност всичко не е толкова страшно.


Ето, например, типична задача: разработване на REST API, сървърната част на приложение. Изобилието от естествени възможности на Node и многото допълнителни модули, които могат да помогнат с тази задача, могат да отведат начинаещия в задънена улица, причинена от богатия избор. Основните проблеми тук са изборът на компоненти и как работят заедно.

Един от начините да създадете бекенда на приложение е да използвате пакета от Node.js, Express framework и MongoDB DBMS. В интерес на истината, днес ще говоря за това как да създадете работещ API оформление, което може да служи като основа за почти всяко приложение. Тук ще внедрим основните REST маршрути, ще взаимодействаме с API през HTTP и ще използваме прости опции за база данни.

За да усвоите успешно този материал, трябва да разберете какво е REST API, да имате представа за CRUD операциите и да имате основни познания по JavaScript. Използвам ES6 тук, нищо прекалено сложно, предимно функции със стрелки.

Ние ще разработим back-end скелет на приложение за водене на бележки, подобно на Google Keep. В този случай ще бъде възможно да се извършат и четирите CRUD действия с бележки, а именно създаване (create), четене (read), актуализиране (update) и изтриване (delete).

Предварителна подготовка

Ако все още нямате Node, сега е моментът да го инсталирате. След инсталирането създайте папка и изпълнете командата, за да инициализирате нов проект в нея:

npm инициал
По време на инициализацията отговорете на въпросите, по-специално дайте на приложението име „забележително“ (или каквото искате).

Файлът трябва да се появи в папката package.json. Това означава, че можете да започнете да инсталирате допълнителни пакети, от които зависи проектът.

Като рамка планираме да използваме Express. Системата за управление на бази данни ще бъде MongoDB. Освен това, като спомагателен инструмент за работа с JSON, използваме пакета body-parser. Нека инсталираме всичко:

npm install --save express mongodb body-parser
Също така силно препоръчвам инсталирането на Nodemon като зависимост от разработчици. Това е прост малък пакет, който автоматично рестартира сървъра, когато файловете се променят.

За да инсталирате този пакет, изпълнете командата:

npm install --save-dev nodemon
След това можете да добавите следния скрипт към файла package.json:

// package.json "скриптове": ( "dev": "nodemon server.js"),
Готов package.jsonще изглежда нещо подобно:

// package.json ( "име": "забележимо", "версия": "1.0.0", "описание": "", "основен": "server.js", "скриптове": ( "dev": "nodemon server.js"), "автор": "", "лиценз": "ISC", "зависимости": ( "body-parser": "^1.15.2", "express": "^4.14.0 ", "mongodb": "^2.2.16") ), "devDependencies": ( "nodemon": "^1.11.0") )
Сега нека създадем файл server.jsи започнете да работите върху API.

сървър

Нека започнем с включването на зависимостите във файла server.js.

// server.js const express = require("express"); const MongoClient = изискване ("mongodb").MongoClient; const bodyParser = require("body-parser"); const app = express();
MongoClient ще се използва за взаимодействие с базата данни. Освен това тук инициализираме константата на приложението, символизираща нашето приложение, с екземпляр на Express framework. За да работи сървърът, остава само да кажете на приложението да започне да слуша HTTP заявки.

Тук посочваме порта и започваме да слушаме, както следва:

// server.js const порт = 8000; app.listen(порт, () =>
Сега, ако стартирате npm run dev (или node server.js, ако не сте инсталирали Nodemon), трябва да видите съобщение във вашия терминал: „Ние сме на живо на порт 8000“.

Така че сървърът работи. Но сега не прави абсолютно нищо полезно. Нека се справим с това.

Маршрути, фокусирани върху CRUD операции

Планираме да създадем 4 маршрута. а именно:
  • CREATE - създаване на бележки.
  • READ - четене на бележки.
  • АКТУАЛИЗАЦИЯ - актуализиране на бележки.
  • DELETE - изтриване на бележки.
След като усвоите тази схема, ще можете да разберете как да организирате почти всеки REST маршрут, от който се нуждаете, с Node.

За да тествате API, имате нужда от нещо, което може да симулира заявки от клиентската страна на приложението. Отлична програма, наречена Postman, ще ни помогне да разрешим този проблем. Тя ви позволява да правите прости HTTP заявки с дадено тяло и параметри.

Инсталирайте Postman. Сега сте готови да настроите маршрути.

За структурата на проекта

Повечето уроци за Node.js (и много приложения от реалния свят) поставят всички маршрути в един голям файл route.js. Този подход не ми харесва много. Организирането на файловете в различни папки подобрява четливостта на кода и прави приложението по-лесно за управление.

Не можете да наречете нашето приложение голямо, но предлагам да направим всичко правилно, като се има предвид, въпреки това, скромният му мащаб. Създайте следните папки: folder ап, а вътре в него - маршрути. В папка маршрутисъздаване на файлове index.jsи note_routes.js. С други думи, структурата на проекта ще изглежда така: корен > приложение > маршрути > index.jsи note_routes.js.

mkdir app cd app mkdir routes cd routes touch index.js touch note_routes.js
Такава структура може да изглежда излишна за малко приложение, но ще бъде много полезна в по-голяма система, изградена въз основа на нашия пример. Освен това е най-добре да започнете всякакви проекти, като използвате най-доброто от съществуващите разработки.

Създаване на бележки: маршрутът CREATE

Нека започнем с маршрута CREATE. За да направите това, ще отговорим на въпроса: „Как да създадете бележка?“.
Преди да започнем да създаваме бележки, трябва да разширим инфраструктурата на приложението. В Express маршрутите са обвити във функция, която приема екземпляр на Express и база данни като аргументи.

Може да изглежда така:

// routes/note_routes.js module.exports = function(app, db) ();
Сега можете да експортирате тази функция чрез index.js:

// routes/index.js const noteRoutes = require("./note_routes"); module.exports = function(app, db) ( noteRoutes(app, db); // По-късно тук ще има още манипулатори на маршрути);
Ние внасяме това, в което сме попаднали server.js:

// server.js const express = require("express"); const MongoClient = изискване ("mongodb").MongoClient; const bodyParser = require("body-parser"); const app = express(); const порт = 8000; изисквам("./app/routes")(app, ()); app.listen(port, () => ( console.log("Ние сме на живо на " + порт); ));
Моля, обърнете внимание, че тъй като все още не сме конфигурирали базата данни, празен обект се предава като втори аргумент.

Сега нека създадем маршрута CREATE. Синтаксисът тук е доста прост:

Module.exports = function(app, db) ( app.post("/notes", (req, res) => ( // Създайте бележка тук. res.send("Hello") )); );
Когато дадено приложение получи POST заявка в пътя „/notes“, то ще изпълни кода във функцията за обратно извикване, предавайки му обекта на заявката (който съдържа параметрите на заявката или JSON данни) и обекта на отговор (който, разбира се, се използва за отговор).

Това, което направихме, вече може да се тества. Нека изпратим, използвайки Postman, POST заявка до адреса localhost:8000/бележки.


Отговорът на заявката трябва да бъде "Здравей"

Отлично. Първият маршрут е създаден. Следващата стъпка е да добавите параметри към заявката, да ги обработите в API и накрая да запазите бележката в базата данни.

Параметри на заявката

В Postman отидете на раздела Тялои добавете множество двойки ключ-стойност, като изберете бутона за избор x-www-form-urlencoded. А именно, първият ключ ще бъде заглавие, значението му е Моето заглавие на бележката. Вторият ключ е тяло, значението му е Каква страхотна бележка.

Това ще добави кодирани данни към заявката, които могат да бъдат обработени от API.


Заглавието на моята бележка и тя самата - са много прости и тук можете да покажете въображението си

Във файл note_route.js, просто изведете тялото на бележката в конзолата.

// note_routes.js module.exports = function(app, db) ( app.post("/notes", (req, res) => ( console.log(req.body) res.send("Hello")) ); );
Опитайте да изпратите заявка с Postman и ще видите... undefined .

За съжаление, Express не може сам да обработва URL-кодирани форми. Тук на помощ ще ни дойде предварително инсталираният пакет body-parser.

// server.js const express = require("express"); const MongoClient = изискване ("mongodb").MongoClient; const bodyParser = require("body-parser"); const app = express(); const порт = 8000; app.use(bodyParser.urlencoded(( разширено: вярно ))); изисквам("./app/routes")(app, ()); app.listen(port, () => ( console.log("Ние сме на живо на " + порт); ));
Сега, след като направите POST заявка, нейното тяло може да се види в терминала като обект.

( заглавие: „Моето заглавие на бележката“, тяло: „Каква страхотна бележка.“ )
За да може първият маршрут да работи напълно, остава само да настроите базата данни и да добавите бележка към нея.

За бързо създаване и конфигуриране на база данни ще използваме услугата mLab. Лесно се работи с него, за малки количества информация е безплатно.

Създайте акаунт на сайта на mLab и разположете нова база данни MongoDB. За да направите това, щракнете върху бутона Създавайте НовВ глава Внедрявания на MongoDB, в прозореца, който се показва, в раздела план, изберете едновъзлов. В списъка стандартна линия, изберете пясъчники дайте име на базата данни. След това в прозореца за управление на базата данни отидете на раздела Потребителии добавете потребител на база данни с потребителско име и парола.


Нов потребител на база данни

Копирайте втория URL от същата страница - низът за връзка с базата данни.


URL за свързване към базата данни

Добавете директория към корена на проекта конфиг, създайте файл в него db.js.

mkdir config cd config докосване db.js
Да подаде db.jsдобавете следното:

Module.exports = ( url: вашият url отива тук );
Не забравяйте да добавите потребителското име и паролата към URL адреса (не тези от mLab акаунта, а тези, които сте създали за базата данни). Ако хоствате проект в Github, не забравяйте да включите файла .gitignore(като този). Така че няма да направите името и паролата за работа с базата данни публични.

Сега в server.js, можете да използвате MongoClient, за да се свържете с базата данни и да обвиете настройките на приложението във функция, която му се предава, когато се създава:

// server.js const express = require("express"); const MongoClient = изискване ("mongodb").MongoClient; const bodyParser = require("body-parser"); const db = изискване ("./config/db"); const app = express(); const порт = 8000; app.use(bodyParser.urlencoded(( разширено: вярно ))); MongoClient.connect(db.url, (err, база данни) => ( if (err) return console.log(err) require("./app/routes")(app, database); app.listen(port, ( ) => ( console.log("Ние сме на живо на " + порт); )); ))
С това завършва подготовката на инфраструктурата. Отсега нататък ще се занимаваме изключително с пътеки.

Добавяне на записи към базата данни

MongoDB съхранява данни в колекции, които напълно оправдават името си. В нашия случай бележките ще се съхраняват в колекция, която, както се досещате, ще се нарича бележки.

При настройването на клиента му беше предаден низ за връзка с база данни, аргументът db. В кода на маршрута достъпът до базата данни може да бъде получен по следния начин:

db.collection("бележки")
Създаването на бележка в базата данни е еквивалентно на извикването на командата за вмъкване в колекцията от бележки:

Const note = (текст: req.body.body, заглавие: req.body.title) db.collection("бележки").insert(бележка, (грешка, резултати) => ( )
След като командата завърши успешно (или след като по някаква причина не успее да се изпълни), или новосъздаденият обект на анотация трябва да бъде върнат в отговор, или трябва да бъде изпратено съобщение за грешка. Ето кода note_routes.js, допълнен със следните съображения:

// note_routes.js module.exports = function(app, db) ( app.post("/notes", (req, res) => ( const note = ( text: req.body.body, title: req.body .title); db.collection("бележки").insert(бележка, (грешка, резултат) =>
Опитайте каквото имате. Изпратете POST заявка от Postman (с флага x-www-form-urlencoded), като зададете в раздела Тялостойности на полето заглавиеи тяло.

Отговорът трябва да изглежда така:


Успешно добавяне на запис към базата данни

Четене на бележки: ПРОЧЕТЕТЕ маршрута

Инфраструктурата, която подготвихме по-горе, е подходяща за всички маршрути, така че сега нещата ще вървят по-бързо.

Така че ще направим запитване към бележката, която току-що създадохме, като следваме пътя localhost:8000/бележки/(идентификатор на бележка). В нашия случай пътят ще изглежда така: локален хост:8000/бележки/585182bd42ac5b07a9755ea3.

Ако нямате ID на една от вече създадените бележки, можете да погледнете в базата данни на mLab и да я намерите там или да създадете нова бележка и да копирате нейния ID.

Ето как изглежда в note_route.js:

// note_routes.js module.exports = function(app, db) ( app.get("/notes/:id", (req, res) => ( )); app.post("/notes", (req , res) => ( const note = ( text: req.body.body, title: req.body.title ); db.collection("бележки").insert(note, (err, result) => ( if ( err) ( res.send(( "error": "Възникна грешка" )); ) else ( res.send(result.ops); ) )); )); );
Точно както преди, ще извикаме някаква команда в колекцията от база данни с бележки. Нека използваме метода findOne за това.

// note_routes.js module.exports = function(app, db) ( app.get("/notes/:id", (req, res) => ( const details = ( "_id":<ТУТ БУДЕТ ID>); db.collection("бележки").findOne(подробности, (err, item) => ( if (err) ( res.send(("error":"Възникна грешка")); ) else ( res.send (вещ); ) )); )); app.post("/notes", (req, res) => ( const note = (text: req.body.body, title: req.body.title); db.collection("notes").insert(note , (грешка, резултат) => ( ако (грешка) ( res.send(( "error": "Възникна грешка" )); ) else ( res.send(result.ops); ) )); )) ; );
Идентификаторът може да бъде извлечен от URL параметрите с помощта на конструкцията req.params.id. Ако обаче просто вмъкнете ред вместо<<>> от кода по-горе, няма да работи.

MongoDB изисква ID не като низ, а като специален обект. Нарича се ИД на обект.

Ето какво получихме след някои малки промени:

// note_routes.js var ObjectID = require("mongodb").ObjectID; module.exports = function(app, db) ( app.get("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": нов ObjectID (id)); db.collection("бележки").findOne(details, (err, item) => ( if (err) ( res.send(("error":"Възникна грешка")); ) else ( res.send(item); ) )); )); app.post("/notes", (req, res) => ( const note = ( текст: req.body.body, заглавие: req.body .title); db.collection("бележки").insert(note, (err, result) => ( if (err) ( res.send(( "error": "Възникна грешка" )); ) else ( res.send(result.ops); ) )); )); );
Изпробвайте го с един от наличните идентификатори на бележки в базата данни. Отговорът в Postman трябва да изглежда така:


Успешна заявка за бележка от базата данни

Изтриване на бележки: ИЗТРИВАНЕ на маршрут

Изтриването на обекти е практически същото като търсенето им в базата данни. Вместо функцията findOne се използва само функцията за премахване. Ето пълния код за съответния път. Тук е подчертано това, което е различно от кода на вече съществуващия метод, който обработва GET заявката.

// note_routes.js // ... app.delete("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": new ObjectID( id)); db.collection("бележки").remove(details, (err, item) => ( if (err) ( res.send(("error":"Възникна грешка")); ) else ( res.send("Забележка " + id + " изтрита!"); ) )); )); // ...

Актуализиране на бележки: АКТУАЛИЗИРАНЕ на маршрута

И ето го последния маршрут. Обработката на PUT заявка е по същество хибрид на операциите READ и CREATE. Първо трябва да намерите обекта, след което да го актуализирате в съответствие с данните, получени в заявката. Сега, ако сте изтрили единствената си бележка, докато сте тествали предишния кодов фрагмент, създайте друга.

Ето кода за маршрута за актуализиране на бележките:

// note_routes.js // ... app.put ("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": нов ObjectID( id)); const note = ( текст: req.body.body, заглавие: req.body.title); db.collection("бележки").update(подробности, бележка, (грешка, резултат) => ( ако ( err) ( res.send(("error":"Възникна грешка")); ) else ( res.send(бележка); ) )); )); // ...
Сега всяка бележка може да бъде редактирана. Ето как изглежда:


Успешна актуализация на бележката

Забележете недостатъка в нашия пример. Ако няма тяло на бележка или заглавка в PUT заявката, съответните полета в базата данни просто ще бъдат изчистени.

Не съм заредил примера с допълнителни проверки. Ако искате, можете сами да промените операцията за актуализиране на бележката, като добавите нови данни към базата данни само ако заявката е формирана правилно.

Резултати

Вече имате работещ API на Node, който поддържа четири основни CRUD операции. Сървърната част на приложението може в отговор на клиентски HTTP заявки да създава бележки в базата данни, да ги намира, изтрива и редактира.

Основната цел на моята история е да запозная всички с пакета Node + Express + MongoDB и методологията за разработване на сървърни приложения. Разбира се, ако днес е първото ви запознаване с тези инструменти, за да разберете по-добре всичко, ще трябва да прочетете документацията. Разбирането на случващото се обаче ще ви позволи бързо да попълните пропуските в знанията и да започнете да работите по собствените си проекти, като използвате приложението, върху което работихме тук, като отправна точка.

Ако имате опит с Node.js, Express и MongoDB в реални проекти, може би можете да посъветвате нещо полезно за начинаещи? А ако сте опитали всичко това за първи път, очакваме вашите впечатления.

Разглеждайки шаблона за синтаксис, ако искаме да добавим нов маршрут към приложението, можем просто да направим нещо като следното:

Router.get("/app", function(req, res) ( res.render("app", ( title: "Express" )); ));

Маршрут ли е? Контролер ли е?

Най-интересното е, че маршрутът е функция, съдържаща логика. Вътре в маршрута е функцията res.render:

Res.render("foo", ( title: "Express" ));

В шаблона за изглед виждаме това:

H1= заглавие p Добре дошли в #(заглавие)

Това са два примера за това как можем да изтеглим данни от контролер/маршрут и да ги покажем в изглед. В този пример извеждаме HTML:

Експрес

Добре дошли в Express

Всичко това изглежда произтича от проблем - може ли маршрутът да съдържа и информация за контролера? Точно така, поради което в обществото има движение за промяна на името на папката от маршрути на контролери.

Чудесен пример за това може да се види в примера Express MVC.

Но в името на последователността в това ръководство ще се придържаме към настоящите конвенции.

404 грешки

Грешките вече ви насочват към Express. Файлът app.js има следното:

/// улавяне 404 и пренасочване към манипулатора на грешки app.use(function(req, res, next) ( var err = new Error("Not found"); err.status = 404; next(err); ));

Има errors.jade в папката views/.

Разширява съдържанието на блока на оформлението h1= съобщение h2= error.status pre #(error.stack)

Всичко е просто. Ако искате да персонализирате страницата си 404, просто редактирайте този изглед.

Както можете да видите от заглавието, нашата статия ще се фокусира върху избора на една от трите рамки за Node.js: Експрес, Коаи Платна.

В края на статията ще споделим с вас избора на фирмаи обяснете защо на избраната от нас рамка трябва да се обърне специално внимание.

Веднага подчертаваме, че задачата е доста сложна и ще бъде трудно да се обяви една от опциите за оптимална и подходяща за всички случаи.

В тази статия първо ще опишем основните характеристики на всяка рамка. И след като имате общо впечатление за тях, нека сравним трите рамки въз основа на няколко ключови критерия..

Сега да преминем към2009 гпри двугодишни експериментиРайън Далза създаване на сървърни уеб компоненти бяха увенчани с успех и се появи фундаментално нова технология.

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

Тъй като преди Node.js JavaScript се използваше само от страна на клиента, появата на такава платформа беше посрещната с ентусиазъм от разработчиците. Всъщност това отвори нови възможности за създаване на приложения с висока производителност и мащабируемост.

Трябва да се признае, че очакванията на разработчиците бяха оправдани и в момента Node.js остава популярен и продължава да се движи напред.

За да проверите това, достатъчно е да проследите периодичността на освобождаването актуализации и обхват на промените .

Общността Node.js расте и се развива. Редовно се генерират нови идеи и в резултат на това се появяват нови инструменти и библиотеки.

Благодарение на този темп на развитие, разработчиците имат на разположение широка гама от рамки и такова разнообразие, като правило, предполага труден избор.

В неговия Тук ще изберем една от трите MVC рамки,които се използват за сървърната част (backend) на приложенията Node.js.

MVC (английски модел-изглед-контролер) модел на проектиране, който включва три компонента: модел, изглед и контролер. И трите компонента могат да се променят независимо един от друг. В този случай моделът предоставя данни и контролни логически правила, изгледът отговаря за показването на данни в потребителския интерфейс, а контролерът осигурява взаимодействие между модела и изгледа.

За сравнение в тази статия,Вие сте избрали:

  • експрес, като най-гъвкавата, проста и бърза рамка
  • Коа като версия Експресново поколение, създадено от същия екип за разработка
  • Платна , като създаден за бързото разработване на приложения, базирани на принципитеRuby on Railsи Експрес.

Всяка от тези рамки има своите последователи и противници, които могат безкрайно да спорят помежду си, давайки свои аргументи за и против.

Но в същото време и трите варианта имат определени характеристики и функции, които осигуряват предимство в определено сито.действие.

EXPRESS.JS

Нека започнем описанието с най-простата рамка, използвана в платформата Node.js.

Експрес се използва за разработване на приложения от дълго време и благодарение на своята стабилност твърдо заема позицията на един от най-

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

Съгласете се, много по-разумно е да използвате натрупания и доказан опит, отколкото да преоткривате колелото.

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

Благодарение на този минимализъм, разработчикът първоначално е на негово разположениесветлина и бърз инструменткоито той може да разширява и развива.

Също така е важно изборът на модули заЕкспресне е свързано с никакви ограничения: нито количествени, нито функционални.

В резултат на това тази рамка предоставя на разработчика възможност да решава всякакви проблеми, без да го ограничава в избора на инструменти.

От една страна, не може да не ни радва фактът, че липсата на готови универсални решения всъщност означава, че всекисъздаденото от вас приложение ще бъде уникално.

От друга страна, разработчикът трябва самостоятелно да избира и организира модули, а това е свързано с голям обем работа и съответно изисква повече време и усилия от разработчика.

ПРОФЕСИОНАЛИСТИ:

✓ простота

✓ гъвкавост

✓ добра скалируемост

✓ развита общност

✓ подробна документация

✓ широка гама от добавки

МИНУСИ:

✗ голямо количество ръчна работа

✗ използва се остарял подход обратни повикванияфункции

KOA.JS

Коае създаден от екипа за разработка каторамков вариантЕкспрес в новото поколение. Тази подобрена версия е разработена за създаване на уеб приложения и API с подобрена производителност. Съответно създателите се опитаха да вземат предвид всички недостатъци на предшественика и да го направят по-модерен и лесен за използване.

Да видим доколко е успешно.

Коаима почти същата функционалност и превъзхождаЕкспресс лекота.

Характерна особеност на Koa е използването на генератори ES6.

Генератори – вид функции, които могат да се стартират, спират и възобновяват независимо от етапа на изпълнение, в който се намират, като същевременно запазват съдържанието си.

Използване на ES6 генератори вКоави позволява да изключите обратни повиквания (англ. обратни повиквания ), намалява количеството работа с код за разработчиците и намалява вероятността от грешки.

Благодарение на това, че създателитеКоанедостатъците, установени в процеса на работа сЕкспрес, тази рамка може да се похвали, че нейното приложениезначително опростява адаптирането към специфични изисквания на клиента (персонализиране). И тази характеристика в крайна сметка може да играе решаваща роля в процеса на подбор: в днешната силно конкурентна среда всяко приложение има тенденция да използва свой собствен стил.

Ако говорим за недостатъци, те са свързани главно с относителната младост.Коа(появи се в 2013). Рамката не се радва на подкрепата на толкова голяма общност катоЕкспрес, и все още не е имал време да демонстрира всичките си възможности.

ПРОФЕСИОНАЛИСТИ:

✓ светлина

✓ гъвкав

✓ бързо

✓ ES6 генератори

✓ най-добро персонализиране

МИНУСИ:

✗ недостатъчна подкрепа от общността

SAILS.JS

Тази рамка е проектирана катопълен завършен продукт, който вече включва достатъчно функционалност, за да започнете, като същевременно използвате минимален брой външни модули.

Съответно, такава рамка първоначално ще бъдепо-тежък от предишните два.

От една страна, разработчикът изисква минимални усилия, тъй като за създаването на приложението се използва собствената функционалност на рамката. Няма нужда да се задълбочавате в тънкостите на процеса - можете просто да вземете готово доказано решение.

От друга страна, разработването на приложението ще бъде ограничено до обхвата на наличните рамкови инструменти, тъй като външните модули заПлатнамного по-малко от заЕкспресили Коа.

Отличителна черта на рамката е вградената технология за програмиранеВодна линия ORM (Английски Object-Relational Mapping), който се използва за комуникация с различни бази данни.

Наличието на такъв компонент може да се отдаде на предимствата, но в процеса на работа може да срещнете определени ограничения. Например,Водна линияне поддържа транзакции, нови функции и корекции на грешки не се правят навреме.

Като цяло по-бавното развитие доскоро беше характерно за цялата общностПлатна, особено в сравнение с други, които поддържат горнотоЕкспреси Коа. Но трябва да се отбележи, че в момента общността на Sails започна да набира скорост и да се развива по-активно.

ПРОФЕСИОНАЛИСТИ:

✓ богата функционалност

✓ Поддръжка на Socket.io

✓ документация на едно място

✓ по-лесно намиране на специалист с опит в работата с платна

МИНУСИ:

✗ тежък

✗ бавен

✗ Ограничения за водолинията

✗ недостатъчно подробна документация

Описахме основните характеристики, характерни за трите рамки, които са напълно достатъчни, за да си съставим обективна представа за тях.

Ако имате въпроси, свържете се с нас още сега!

За да ви помогне да сравните по-визуално трите рамки въз основа на горните функции, компаниятапредлага малкасравнителна таблица.

Нека се опитаме да направимобщо заключениеот това, което вече знаем за въпросните три рамки. Нека да определим за кои проекти като цяло всеки от тях е по-подходящ:

Express.jsподходящ за:

  • начинаещи програмисти, които са насочени към професионално израстване в Node JS;
  • големи проекти, включващи персонализиране;
  • случаи, когато е необходима дългосрочна поддръжка на приложението.

Sails.jsподходящ за:

  • бърз старт на проекта;
  • бързо стартиращи компании, които не очакват разширяване в бъдеще;
  • приложения в реално време, където се изисква мигновен отговор;
  • начинаещи Node.js програмисти;
  • приложения, които не изискват дългосрочна поддръжка.

Честно казано, отбелязваме, че приложенията в реално време могат да се създават и с помощта на Express. Въпреки това, когато разработвате такова приложение с помощта на Sails, ще отнеме много по-малко време и усилия за създаването и конфигурирането му.

Koa.jsподходящ за:

  • малки и големи проекти, които включват развитие в бъдещето;
  • за проекти с висока степен на персонализация;
  • за улесняване на дългосрочна поддръжка на приложения.

Сега, след като разгледахме плюсовете и минусите на всяка от трите рамки в детайли, нека поговорим коя рамка да изберем. и защо.

Избираме Koa, защото:

  • Подобно на Express, Koa не ограничава програмиста да използва вградени модули, а по-скоро позволява на разработчика да избира от комплектиточно този, който е най-подходящ за конкретен проект;
  • Koa се възползва от доказаната и широко използвана Express framework;
  • създателите на Koa имаха възможност да анализират трудностите, пред които са изправени разработчиците, използващи Express;
  • при създаването на Koa бяха взети предвид недостатъците на предшественика му;
  • Koa е базиран на нови стандарти и в съответствие с настоящите тенденции;
  • Koa е подходящ за разработване на голямо разнообразие от приложения от всякакъв размер, с всякаква степен на персонализиране и с всякакви изисквания за поддръжка;

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

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

Винаги сме готови да подкрепим вашия избор и да ви помогнем да реализирате всеки проект. Не отлагай за утре точно сега!

Първи стъпки с Express

Последна актуализация: 18.11.2018

В тази глава ще разгледаме създаването на сървър с помощта на Express framework. Изглежда, защо се нуждаем от допълнителна рамка, ако можем да използваме готовия http модул, който е в Node.js API. Самият Express обаче използва http модула, но в същото време предоставя редица готови абстракции, които опростяват създаването на сървъра и сървърната логика, по-специално обработката на изпратени формуляри, работа с бисквитки, CORS и др.

Нека създадем нова директория за проекта, която ще наречем например expressapp. За да съхранявате информация за всички зависимости на проекта, дефинирайте нов файл package.json в тази директория:

( "name": "expressapp", "version": "1.0.0", "dependencies": ( "express": "^4.16.4") ))

Нека създадем нов файл app.js в директорията на проекта:

// свързване express const express = require("express"); // създаване на обект на приложение const app = express(); // дефиниране на манипулатор за маршрут "/" app.get("/", function(request, response)( // изпращане на отговор response.send("

Здравей Експрес!

"); )); // започнете да слушате за връзки на порт 3000 app.listen(3000);

За да използвате Express, първо трябва да създадете обект, който ще представлява приложението:

Const app = express();

Express има редица вградени функции за обработка на заявки, една от които е функцията app.get(). Той обработва HTTP GET заявки и ви позволява да свързвате маршрути с конкретни манипулатори. За да направите това, първият параметър е маршрутът, а вторият е манипулаторът, който ще бъде извикан, ако заявката към сървъра съответства на дадения маршрут:

App.get("/", function(request, response)( // изпращане на отговора response.send("

Здравей Експрес!

"); });

Маршрутът "/" представлява основния маршрут.

За стартиране на сървъра се извиква методът app.listen(), като се предава номера на порта.

Стартирайте проекта и влезте в браузъра на http://localhost:3000/:

И което е важно, Express разчита на система за маршрутизиране, така че всички други заявки, които не съответстват на основния маршрут "/", няма да бъдат обработени:

Сега нека променим файла app.js:

Const express = require("express"); const app = express(); app.get("/", function(request, response)( response.send("

Главна страница

"); )); app.get("/about", function(request, response)( response.send("

Относно сайта

"); )); app.get("/contact", функция(заявка, отговор)( response.send("

Контакти

"); )); app.listen(3000);

Сега приложението дефинира три маршрута, които ще бъдат обработени от сървъра.

Хареса ли ви статията? Сподели с приятели!