NodeJS примитивы

Редакция автор: stain

Тут и гусли тут и хабар, надо было сразу испить из этого колодца.
-Настройка серверной части? Есть!
-Запись чтение файлов? Есть!
-Написание неблокирующих код функций? -Есть!

Адекватная нудятина - мы так долго это понимали что непременно должны блестнуть знанием и блеск этот будет отражаться мириадами букв.

Парсинг на nodejs.

В разработке

- Жили были некие программисты и придумали они nodejs, и поотрубало им руки, и в силу стечения обстоятельств инвалиды писали не руками но граблями, и оттого в интернете нет ни одного вменяемого руководства, только грабельки и грабельки побольше, ... сезон грабелек и етцетра. Зачем надо писать руководство неприменимое к реальным задачам ну какого художника.

0. Устанавливайте NodeJS
Любой NODE начинается с создания project.json
1. В каталоге будущего приложения, в консоли пишем:
npm init
Отвечайте на вопросы ...
Файл создан, естественно с кучей предупреждений, но нам ... правильно пофиг, и файл index.js это главный файл вашего приложения, мы же тыкали бездумно.
Пример файла проекта параметры разделены запятой.

{
  "name": "node",
  "version": "1.0.0",
  "description": "node",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "repository" : { 
   "type" : "git",
   "url" : "http://"
  }
}

2. Создаем файл server.js

var http = require("http");
var url = require("url");

function start(route, handle) {
  function onRequest(request, response) {
    var postData = "";
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");

    request.setEncoding("utf8");

    request.addListener("data", function(postDataChunk) {
      postData += postDataChunk;
      console.log("Received POST data chunk '"+
      postDataChunk + "'.");
    });

    request.addListener("end", function() {
      route(handle, pathname, response, postData);
    });

  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}

exports.start = start;

3.Создаем главный файл нашего приложения index.js, и подключаем в нем запуск сервера.

var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");

var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;

server.start(router.route, handle);

4. Запускаем файл index.js
node index.js
В консоли видим что сервер стартовал, идем в браузер http://127.0.0.1:8888/ , а теперь нате вам и думайте как же подрубить к этому дерьму реальные файлы и каталоги.

5. Создаем роутер router.js

function route(handle, pathname, response, postData) {
  console.log("About to route a request for " + pathname);
  if (typeof handle[pathname] === 'function') {
    handle[pathname](response, postData);
  } else {
    console.log("No request handler found for " + pathname);
    response.writeHead(404, {"Content-Type": "text/plain"});
    response.write("404 Not found");
    response.end();
  }
}

exports.route = route;

6. Обработчики запросов + view.

var querystring = require("querystring");

function start(response, postData) {
  console.log("Request handler 'start' was called.");

  var body = ''+
    ''+
    ''+
    ''+
    ''+
    '
'+ ''+ ''+ '
'+ ''+ ''; response.writeHead(200, {"Content-Type": "text/html"}); response.write(body); response.end(); } function upload(response, postData) { console.log("Request handler 'upload' was called."); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("You've sent the text: "+ querystring.parse(postData).text); response.end(); } exports.start = start; exports.upload = upload;

7. Установка внешнего модуля
npm install formidable

8. Читайте самое начало этого непотребства, там есть ссылка по сути на источник этой выжимки. От себя добавлю пока автор той статьи не стал играться с formidable, все было более менее логично.

Снипеты

Парсим картинку, и сохраняем ее на локальном носителе

function save_fileimg(){
var http = require('http')
  , fs = require('fs')
  , options
 
options = {
    host: 'staindb.pixarts.ru'
  , port: 80
  , path: '/wp-content/uploads/2017/02/nodejs_concepts.jpg'
}
 
var request = http.get(options, function(res){
    var imagedata = ''
    res.setEncoding('binary')
 
    res.on('data', function(chunk){
        imagedata += chunk
    })
 
    res.on('end', function(){
        fs.writeFile('nodejs_concepts.jpg', imagedata, 'binary', function(err){
            if (err) throw err
            console.log('File saved.')
        })
    })
 
})
}

save_fileimg();

Мусор!

Запустить в фоне добавляя в конец команды & .

node mws.js &

Видим номер процесса, и наша консоль по прежнему доступна.
&
Выключаем по номеру процесса.

service XXXX stop

Баш ругается, но сервис останавливает.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.