04-10-2017
фотография юзера
статус блогера: init просмотры: off профиль все блоги

Part 1

  

1.       Nodejs.  Начало

 

C:\WINDOWS\system32>node

> 2+6

8

> 

    

На первом этапе все это можно набирать прямо в командной строке, что неудобно даже для демонстрационных целей. Запишем данные в файл:

 

var http = require("http");

http.createServer(function(request,response){

    

    response.end("Hello NodeJS!");

    

}).listen(3000, "127.0.0.1",function(){

    console.log("Сервер начал прослушивание запросов на порту 3000");

});

Сохраняемый файл должен быть расширения js. После чего файл надо вызвать в командной строке.

 

cd C:\node\helloapp

node app.js

 

Сервер запущен. Страницу можно вызвать в браузере по адресу localhost:3000

 

2.       Вызов модулей

 

var os = require("os");

var userName = os.userInfo().username;

 

             console.log(userName);

 

 

Вызов собственного модуля:
var greeting = require("./module");

 

Внутри модуля переменные надо экспортировать:
module.exports

 

var currentDate = new Date();

module.exports.date = currentDate;

 

module.exports.getMessage = function(name){

    var hour = currentDate.getHours();

    if(hour > 16)

        return "Добрый вечер, " + name;

    else if(hour > 10)

        return "Добрый день, " + name;

    else

        return "Доброе утро, " + name;

}

 

 

 

3.       Объекты внутри модуля

Внутри модуля, по правилам ООП и js, можно создавать целые объекты и передавать их в основную программу через exports

 

function User(name, age){

    

    this.name = name;

    this.age = age;

    this.displayInfo = function(){

        

        console.log(`Имя: ${this.name}  Возраст: ${this.age}`);

    }

}

User.prototype.sayHi = function() {

    console.log(`Привет, меня зовут ${this.name}`);

};

 

module.exports = User;

 

В основной программе вызов будет выглядеть так:
var User = require("./user.js");

 

var eugene = new User("Eugene", 32);

eugene.sayHi();

 

 

4.       Установка NPM ( Node Package Manager)

 

npm install npm@latest -g

 

Узнать версию npm можно вот так:
npm –v

 

С помощью npm можно установить прочие пакеты, например, фрейворк экспресс:

npm install express

 

С помощью express можно сделать, например, простую маршрутизацию:

var express = require("express");

// создаем приложение

var app = express();

 

// устанавливаем обработчик для маршрута "/"

app.get("/", function(request, response){

 

    response.end("Hello from Express!");

});

// начинаем прослушивание подключений на 3000 порту

app.listen(3000);

 

 

5.       Передача параметров приложению:

Параметры командной строки содержатся в process.argv. например:
var nodePath = process.argv[0];

var appPath = process.argv[1];

var name = process.argv[2];

var age = process.argv[3];

 

console.log("nodePath: " + nodePath);

console.log("appPath: " + appPath);

console.log();

console.log("name: " + name);

console.log("age: " + age);

 

Теперь надо ввести параметры:

node app.js vasya 20

 

 

6.       Модуль fs – чтение файлов

 

Чтение файла:

var fileContent = fs.readFileSync("hello.txt", "utf8");

Асинхронное чтение применяется с вызовом callback:
fs.readFile("hello.txt", "utf8", function(error,data){ });

 

var fs = require("fs");

 

// асинхронное чтение

fs.readFile("hello.txt", "utf8",

            function(error,data){

                console.log("Асинхронное чтение файла");

                if(error) throw error; // если возникла ошибка

                console.log(data);  // выводим считанные данные

});

 

// синхронное чтение

console.log("Синхронное чтение файла")

var fileContent = fs.readFileSync("hello.txt", "utf8");

console.log(fileContent);

 

 

Запись файла:

 


              

fs.writeFileSync("hello.txt", "это строка!")

 

Либо асинхронная запись:

fs.writeFile("hello.txt", "Привет, пацаны!")

 

var fs = require("fs");

 

fs.writeFile("hello.txt", "Hello мир!", function(error){

 

                if(error) throw error; // если возникла ошибка

                console.log("Асинхронная запись файла завершена. Содержимое файла:");

                var data = fs.readFileSync("hello.txt", "utf8");

                console.log(data);  // выводим считанные данные

});

 

var fs = require("fs");

 

fs.writeFile("hello.txt", "Hello мир!", function(error){

 

                if(error) throw error; // если возникла ошибка

                console.log("Асинхронная запись файла завершена. Содержимое файла:");

                var data = fs.readFileSync("hello.txt", "utf8");

                console.log(data);  // выводим считанные данные

});

 

Для дозаписи в файл применяются функции:
           fs.appendFile()/fs.appendFileSync():

 

var fs = require("fs");

 

fs.appendFileSync("hello.txt", "Привет ми ми ми!");

 

fs.appendFile("hello.txt", "Привет МИД!", function(error){

                if(error) throw error; // если возникла ошибка

                

                console.log("Запись файла завершена. Содержимое файла:");

                var data = fs.readFileSync("hello.txt", "utf8");

                console.log(data);  // выводим считанные данные

});

 

 

7.       EventEmitter

 

Мы можем генерировать свои события и их обрабатывать.

 

var Emitter = require("events");

var emitter = new Emitter();

var eventName = "greet";

emitter.on(eventName, function(){

    console.log("Hello all!");

});

 

emitter.on(eventName, function(){

    console.log("Привет!");

});

 

emitter.emit(eventName);

 

 

8.       Stream

Stream -  поток данных. Потоки бывают различных типов, можно выделить потоки для чтения и потоки для записи:

 

Можно рассмотреть следующий код:
var http = require("http");

 

http.createServer(function(request, response){

    

}).listen(3000);

 

Здесь request - поток для чтения, а response - поток для записи

 

Использование fs.createWriteStream() для записи в файл:

var fs = require("fs");

 

var writeableStream = fs.createWriteStream("hello.txt");

writeableStream.write("Привет мир!");

writeableStream.write("Продолжение записи \n");

writeableStream.end("Завершение записи");

var readableStream = fs.createReadStream("hello.txt", "utf8");

 

readableStream.on("data", function(chunk){

    console.log(chunk);

});

 

var fs = require("fs");

 

var writeableStream = fs.createWriteStream("hello.txt");

writeableStream.write("Привет мир!");

writeableStream.write("Продолжение записи \n");

writeableStream.end("Завершение записи");

var readableStream = fs.createReadStream("hello.txt", "utf8");

 

readableStream.on("data", function(chunk){

    console.log(chunk);

});

 

В последнем примере показано чтение. Чтение, как видим, идёт чанками.

 

 

9.       Сервер

Возвращаемся к созданию сервера.

Простой сервер выглядит так:
var http = require("http");

 

http.createServer(function(request, response){

    

    response.end("Hello world!");

}).listen(3000);

request: хранит информацию о запросе

 

response: управляет отправкой ответа

Через request можно получить массу всего интересного:

ar http = require("http");

 

http.createServer(function(request, response){

    

    console.log("Url: " + request.url);

    console.log("Тип запроса: " + request.method);

    console.log("User-Agent: " + request.headers["user-agent"]);

    console.log("Все заголовки");

    console.log(request.headers);

    

    response.end();

}).listen(3000);

Когда мы запустим приложение через браузер, адрес будет находиться в request.url

 

А теперь ответ:
var http = require("http");

 

http.createServer(function(request, response){

    

    response.setHeader("UserId", 12);

    response.setHeader("Content-Type", "text/html");

    response.write("

hello world

");

    response.end();

}).listen(3000);

Настроение: nice
X

Регистрация

Email

Логин

Имя

Пароль

Повтор пароля