aboutsummaryrefslogtreecommitdiff
path: root/files/ru/learn/server-side/node_server_without_framework
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/learn/server-side/node_server_without_framework
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/learn/server-side/node_server_without_framework')
-rw-r--r--files/ru/learn/server-side/node_server_without_framework/index.html84
1 files changed, 84 insertions, 0 deletions
diff --git a/files/ru/learn/server-side/node_server_without_framework/index.html b/files/ru/learn/server-side/node_server_without_framework/index.html
new file mode 100644
index 0000000000..087627c20a
--- /dev/null
+++ b/files/ru/learn/server-side/node_server_without_framework/index.html
@@ -0,0 +1,84 @@
+---
+title: Node.js server without a framework
+slug: Learn/Server-side/Node_server_without_framework
+translation_of: Learn/Server-side/Node_server_without_framework
+---
+<div>{{LearnSidebar}}</div>
+
+<p class="summary">Здесь вы найдете описание простого статического сервера, который построен сугубо на Node.js без использования какого-либо фреймворка .</p>
+
+<p><a href="https://nodejs.org/en/">Node.js</a> может использовать множество фреймворков, которые могут помочь создать сервер</p>
+
+<p>Наиболее популярные:</p>
+
+<ul>
+ <li><a href="http://expressjs.com/">Express</a>: Один из наиболее популярных фреймворков.</li>
+ <li><a href="https://hapijs.com/">Hapi.js</a>: Набирающий популярность фреймворк для построения приложений и сервисов</li>
+ <li><a href="https://www.totaljs.com/">Total</a>:  Этот фреймворк имеет богатый функционал и не требует каких-либо дополнительных фреймворков или библиотек.</li>
+</ul>
+
+<p>Конечно-же эти фреймворки могут и не подойти для каждого конкретного случая. Именно поэтому нужно знать как все работает изнутри, чтобы быть готовым сделать свой собственный сервер без каких-либо дополнительных зависимостей.</p>
+
+<h2 id="Пример">Пример</h2>
+
+<p>Вот так выглядит  статический сервер на Node.js:</p>
+
+<pre class="brush: js">var http = require('http');
+var fs = require('fs');
+var path = require('path');
+
+http.createServer(function (request, response) {
+ console.log('request ', request.url);
+
+ var filePath = '.' + request.url;
+ if (filePath == './') {
+ filePath = './index.html';
+ }
+
+ var extname = String(path.extname(filePath)).toLowerCase();
+ var contentType = 'text/html';
+ var mimeTypes = {
+  '.html': 'text/html',
+ '.js': 'text/javascript',
+ '.css': 'text/css',
+ '.json': 'application/json',
+ '.png': 'image/png',
+ '.jpg': 'image/jpg',
+ '.gif': 'image/gif',
+ '.wav': 'audio/wav',
+ '.mp4': 'video/mp4',
+ '.woff': 'application/font-woff',
+ '.ttf': 'application/font-ttf',
+ '.eot': 'application/vnd.ms-fontobject',
+ '.otf': 'application/font-otf',
+ '.svg': 'application/image/svg+xml'
+ };
+
+ contentType = mimeTypes[extname] || 'application/octet-stream';
+
+ fs.readFile(filePath, function(error, content) {
+ if (error) {
+ if(error.code == 'ENOENT'){
+ fs.readFile('./404.html', function(error, content) {
+ response.writeHead(200, { 'Content-Type': contentType });
+ response.end(content, 'utf-8');
+ });
+ }
+ else {
+ response.writeHead(500);
+ response.end('Sorry, check with the site admin for error: '+error.code+' ..\n');
+ response.end();
+ }
+ }
+ else {
+ response.writeHead(200, { 'Content-Type': contentType });
+ response.end(content, 'utf-8');
+ }
+ });
+
+}).listen(8125);
+console.log('Server running at http://127.0.0.1:8125/');</pre>
+
+<h2 id="Задание">Задание</h2>
+
+<p>Попробуйте добавить в этот код описание как работает этот код. Как вариант еще можно добавить функционал динамических запросов.</p>