{"id":15534,"date":"2023-04-03T12:10:45","date_gmt":"2023-04-03T08:40:45","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/10-trending-nodejs-libraries-and-frameworks-to-boost-your-web-development-3aa5\/"},"modified":"2023-04-03T12:10:45","modified_gmt":"2023-04-03T08:40:45","slug":"10-trending-nodejs-libraries-and-frameworks-to-boost-your-web-development-3aa5","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/10-trending-nodejs-libraries-and-frameworks-to-boost-your-web-development-3aa5\/","title":{"rendered":"10 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628 \u067e\u0631\u0637\u0631\u0641\u062f\u0627\u0631 Node.js \u0628\u0631\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0634\u0645\u0627"},"content":{"rendered":"<div data-article-id=\"1423876\" id=\"article-body\">\n<h2>\n<p>  \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 Node.js \u0628\u0627 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627<br \/>\n<\/h2>\n<p>\u0622\u06cc\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0628\u0647\u0628\u0648\u062f \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 Node.js \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f\u061f  \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0646\u0628\u0627\u0634\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 10 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u0631\u0637\u0631\u0641\u062f\u0627\u0631 Node.js \u0631\u0627 \u06af\u0631\u062f\u0622\u0648\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0628\u0647\u0628\u0648\u062f \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u062e\u0648\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f.  \u0686\u0647 \u0645\u0628\u062a\u062f\u06cc \u06cc\u0627 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0627 \u062a\u062c\u0631\u0628\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f \u0631\u0648\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u062e\u0648\u062f \u0631\u0627 \u0633\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627 \u063a\u0648\u0637\u0647 \u0648\u0631 \u0634\u0648\u06cc\u0645 \u0648 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u0645!<\/p>\n<p><strong>1. Express.js \ud83d\ude80<\/strong><\/p>\n<p>Express.js \u06cc\u06a9 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0645\u062d\u0628\u0648\u0628 Node.js \u0627\u0633\u062a \u06a9\u0647 \u0631\u0648\u06cc\u06a9\u0631\u062f\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0627\u0633\u062a \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 RESTful API\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0648 \u062d\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0628\u0644\u0627\u062f\u0631\u0646\u06af \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 WebSockets \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0631\u0648\u0631 HTTP \u0633\u0627\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Express \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const express = require('express');\nconst app = express();\n\napp.get(\"https:\/\/dev.to\/\", (req, res) =&gt; {\n  res.send('Hello World!');\n});\n\napp.listen(3000, () =&gt; {\n  console.log('Example app listening on port 3000!');\n});\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>2. Socket.io \ud83c\udf10<\/strong><\/p>\n<p>Socket.io \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0648\u0637\u0631\u0641\u0647 \u0648 \u0628\u0644\u0627\u062f\u0631\u0646\u06af \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0628\u0644\u0627\u062f\u0631\u0646\u06af \u0645\u0627\u0646\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0686\u062a\u060c \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u0628\u0627\u0632\u06cc \u0622\u0646\u0644\u0627\u06cc\u0646 \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0634\u0627\u0631\u06a9\u062a\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Socket.io \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0648\u0631\u0648\u062f\u06cc \u0648 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const io = require('socket.io')(http);\n\nio.on('connection', (socket) =&gt; {\n  console.log('a user connected');\n\n  socket.on('chat message', (msg) =&gt; {\n    console.log('message: ' + msg);\n    io.emit('chat message', msg);\n  });\n\n  socket.on('disconnect', () =&gt; {\n    console.log('user disconnected');\n  });\n});\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>3. \u0645\u0627\u0646\u06af\u0648\u0633 \ud83c\udf43<\/strong><\/p>\n<p>Mongoose \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u06cc \u0634\u06cc MongoDB \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0633\u0627\u062f\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0646\u0648\u0639 \u0631\u06cc\u062e\u062a\u0647 \u06af\u0631\u06cc \u062f\u0627\u062e\u0644\u06cc\u060c \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc\u060c \u0633\u0627\u062e\u062a \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0648 \u0642\u0644\u0627\u0628 \u0647\u0627\u06cc \u0645\u0646\u0637\u0642 \u062a\u062c\u0627\u0631\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u062f\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Mongoose \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const mongoose = require('mongoose');\n\nconst userSchema = new mongoose.Schema({\n  name: String,\n  age: Number,\n  email: String\n});\n\nconst User = mongoose.model('User', userSchema);\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>4. Nodemailer \ud83d\udce7<\/strong><\/p>\n<p>Nodemailer \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 API \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 \u0645\u0627\u0646\u0646\u062f SMTP\u060c sendmail \u06cc\u0627 Amazon SES \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Nodemailer \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u0627\u0646\u062a\u0642\u0627\u0644 SMTP \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const nodemailer = require('nodemailer');\n\nconst transporter = nodemailer.createTransport({\n  host: 'smtp.gmail.com',\n  port: 465,\n  secure: true,\n  auth: {\n    user: 'your@gmail.com',\n    pass: 'yourpassword'\n  }\n});\n\nconst mailOptions = {\n  from: 'your@gmail.com',\n  to: 'recipient@gmail.com',\n  subject: 'Hello from Node.js',\n  text: 'Hello, this is a test email sent from Node.js!'\n};\n\ntransporter.sendMail(mailOptions, (error, info) =&gt; {\n  if (error) {\n    console.log(error);\n  } else {\n    console.log('Email sent: ' + info.response);\n  }\n});\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>5. Passport.js \ud83d\udd11<\/strong><\/p>\n<p>Passport.js \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 API \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0622\u0633\u0627\u0646 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0634\u0645\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u062d\u0644\u06cc\u060c OAuth\u060c OpenID \u0648 \u063a\u06cc\u0631\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Passport.js \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const passport = require('passport');\nconst LocalStrategy = require('passport-local').Strategy;\n\npassport.use(new LocalStrategy(\n  function(username, password, done) {\n    User.findOne({ username: username }, function(err, user) {\n      if (err) { return done(err); }\n      if (!user) { return done(null, false); }\n      if (!user.validPassword(password)) { return done(null, false); }\n      return done(null, user);\n    });\n  }\n));\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>6. Async.js \u23f0<\/strong><\/p>\n<p>Async.js \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0627\u0628\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0647 \u0631\u0648\u0634\u06cc \u062e\u0648\u0627\u0646\u0627 \u0648 \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0639\u0645\u0644\u06a9\u0631\u062f\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0633\u0631\u06cc\u060c \u0645\u0648\u0627\u0632\u06cc\u060c \u0622\u0628\u0634\u0627\u0631 \u0648 \u063a\u06cc\u0631\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639 async.parallel \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const async = require('async');\n\nasync.parallel([\n    function(callback) {\n        setTimeout(function() {\n            callback(null, 'one');\n        }, 200);\n    },\n    function(callback) {\n        setTimeout(function() {\n            callback(null, 'two');\n        }, 100);\n    }\n],\nfunction(err, results) {\n    console.log(results);\n    \/\/ output: ['one', 'two']\n});\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>7. GraphQL \ud83d\udd0d<\/strong><\/p>\n<p>GraphQL \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0648 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0631\u0627\u06cc API \u0647\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631\u060c \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u062a\u0631 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u062a\u0631 \u0631\u0627 \u0628\u06cc\u0646 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0633\u0631\u0648\u0631 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f\u060c \u0648 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u0686\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f\u060c \u0645\u0634\u062e\u0635 \u06a9\u0646\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0648 \u062d\u0644\u200c\u06a9\u0646\u0646\u062f\u0647 GraphQL \u0628\u0631\u0627\u06cc \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const { GraphQLSchema, GraphQLObjectType, GraphQLString } = require('graphql');\n\nconst schema = new GraphQLSchema({\n  query: new GraphQLObjectType({\n    name: 'HelloWorld',\n    fields: {\n      message: {\n        type: GraphQLString,\n        resolve: () =&gt; 'Hello World!'\n      }\n    }\n  })\n});\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>8. Axios \ud83d\udce1<\/strong><\/p>\n<p>Axios \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06af\u06cc\u0631\u0646\u062f\u0647 HTTP \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0639\u062f\u0647 \u0628\u0631\u0627\u06cc Node.js \u0648 \u0645\u0631\u0648\u0631\u06af\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0622\u0633\u0627\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u0633\u062e\u200c\u0647\u0627 \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u0627\u0646\u0646\u062f \u0631\u0647\u06af\u06cc\u0631\u060c \u0644\u063a\u0648 \u0648 \u063a\u06cc\u0631\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Axios \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP GET \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u067e\u0627\u0633\u062e \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const axios = require('axios');\n\naxios.get('https:\/\/jsonplaceholder.typicode.com\/posts\/1')\n  .then(function (response) {\n    console.log(response.data);\n  })\n  .catch(function (error) {\n    console.log(error);\n  });\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>9. \u0648\u06cc\u0646\u0633\u062a\u0648\u0646 \ud83d\udcdd<\/strong><\/p>\n<p>Winston \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 logging \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u0627\u0646\u0646\u062f \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 \u0645\u062a\u0639\u062f\u062f\u060c \u0633\u0637\u0648\u062d \u06af\u0632\u0627\u0631\u0634 \u0648 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u0647\u062f\u0627\u0641 \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f \u06a9\u0646\u0633\u0648\u0644\u060c \u0641\u0627\u06cc\u0644\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u063a\u06cc\u0631\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Winston \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u067e\u06cc\u0627\u0645 \u0628\u0627 \u0633\u0637\u0648\u062d \u0645\u062e\u062a\u0644\u0641 \u06af\u0632\u0627\u0631\u0634 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const winston = require('winston');\n\nconst logger = winston.createLogger({\n  level: 'info',\n  format: winston.format.json(),\n  defaultMeta: { service: 'user-service' },\n  transports: [\n    new winston.transports.Console(),\n    new winston.transports.File({ filename: 'error.log', level: 'error' })\n  ]\n});\n\nlogger.error('This is an error message');\nlogger.warn('This is a warning message');\nlogger.info('This is an info message');\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>10. Nest.js \ud83d\udc26<\/strong><\/p>\n<p>Nest.js \u06cc\u06a9 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u06cc\u0634\u0631\u0648 Node.js \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u062f\u0648\u0644\u0627\u0631\u060c \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u0648 \u06cc\u06a9 CLI \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f \u062f\u06cc\u06af \u0628\u062e\u0627\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc\u060c \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u063a\u06cc\u0631\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0633\u0627\u062f\u0647 API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Nest.js \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import { Controller, Get } from '@nestjs\/common';\n\n@Controller('hello')\nexport class HelloController {\n  @Get()\n  getHello(): string {\n    return 'Hello World!';\n  }\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0627\u06cc\u0646 10 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 Node.js \u067e\u0631\u0637\u0631\u0641\u062f\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062a\u0642\u0648\u06cc\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0648 \u0628\u0647\u0628\u0648\u062f \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u062e\u0648\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f.  \u0686\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0628\u0644\u0627\u062f\u0631\u0646\u06af\u060c \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u0627 \u062b\u0628\u062a \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0647 \u0627\u0647\u062f\u0627\u0641\u062a\u0627\u0646 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0648\u0634 \u0648 \u062a\u0631\u06a9\u06cc\u0628 \u0622\u0646\u0647\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f\u06cc \u062e\u0648\u062f \u06a9\u0646\u06cc\u062f!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 Node.js \u0628\u0627 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627 \u0622\u06cc\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0628\u0647\u0628\u0648\u062f \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 Node.js \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f\u061f \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0627\u06cc\u0646 \u0646\u0628\u0627\u0634\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 10 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u0631\u0637\u0631\u0641\u062f\u0627\u0631 Node.js \u0631\u0627 \u06af\u0631\u062f\u0622\u0648\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0628\u0647\u0628\u0648\u062f \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u062e\u0648\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f. \u0686\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":15535,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-15534","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/15534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=15534"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/15534\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/15535"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=15534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=15534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=15534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}