Node Hero
https://github.com/irinainina/node.js/tree/node-hero
Модули
Структура проекта
├── app
| ├── calc.js
| └── index.js
├── index.js
└── package.json
index.js
Подключаем файл app.js из папки app
app.js
calc.js
Установим библиотеку lodash
Синхронное чтение файла
Асинхронное чтение файла
особенности асинхронного выполнения кода:
Сервер на Node.js
Сервер на Еxpress
Самое большое преимущество Express - встроенный роутер
Маршрутизация приложения определяется с помощью app.get, app.post, app.put и т.д.
Данные можно хранить в файловой системе, но это затрудняет масштабирование приложения, а хранение большого объёма данных может замедлить его работу.
Поэтому используются базы данных. Их два типа - SQL и NoSQL
SQL - реляционные базы данных. Они представляют собой таблицы, вроде Google Sheets или Microsoft Excel. Каждое новое значение добавляется в них как строка в таблицу. У каждого столбца этой таблицы задаётся значение и тип данных: имя пользователя - строка, возраст пользователя - число, является ли пользователь админом - булево значение, список друзей пользователя - объект и т д
NoSQL - могут хранить произвольный JSON. Это удобно и просто, но нет гарантий целостности и непротиворечивости данных и нет единой структуры данных. MongoDB - самая популярная NoSQL база данных
index.js
Подключаем файл app.js из папки app
require('./app/app')
app.js
const sum = require('./calc')
const numbersToAdd = [3, 4, 10, 2]
const result = sum(numbersToAdd)
console.log(`The result is: ${result}`)
calc.js
function sum (arr) {
return arr.reduce((a, b) => a + b, 0)
}
module.exports = sum
NPM
Установим библиотеку lodash
npm install lodash
Подключаем и используем
const _ = require('lodash')
const res = _.assign({ 'a': 1 }, { 'b': 2 }, { 'c': 3 });
console.log(res) // { a: 1, b: 2, c: 3 }
Асинхронность
Синхронное чтение файла
const fs = require("fs");
const path = require("path");
let content;
try {
content = fs.readFileSync(path.join(__dirname, "..", "file.md"), "utf-8");
} catch (ex) {
console.log(ex);
}
console.log(content);
Асинхронное чтение файла
const fs = require('fs')
const path = require("path");
fs.readFile(path.join(__dirname, "..", "file.md"), 'utf-8', (err, content) => {
if (err) {
return console.log(err)
}
console.log(content)
})
особенности асинхронного выполнения кода:
- обработка ошибок: вместо блока
try-catch
ошибка проверяется в функции, переданной в качестве параметра - колбеке - отсутствует возвращаемое значение: асинхронные функции не возвращают значения, но значения будут переданы в колбек
Сервер
Сервер на Node.js
const http = require("http");
const server = http.createServer((request, response) => {
response.end("Hello NodeJS!");
});
server.listen(3000, () => {
if (err) {
return console.log(err);
}
console.log("Сервер начал прослушивание запросов на порту 3000");
});
Сервер на Еxpress
const express = require("express");
const app = express();
app.get("/", (request, response) => {
response.end("Hello Express!");
});
app.listen(3000, (err) => {
if (err) {
return console.log(err);
}
console.log("Сервер начал прослушивание запросов на порту 3000");
});
Самое большое преимущество Express - встроенный роутер
Маршрутизация приложения определяется с помощью app.get, app.post, app.put и т.д.
Базы данных
Данные в самом приложении могут храниться только до его перезагрузки.Данные можно хранить в файловой системе, но это затрудняет масштабирование приложения, а хранение большого объёма данных может замедлить его работу.
Поэтому используются базы данных. Их два типа - SQL и NoSQL
SQL - реляционные базы данных. Они представляют собой таблицы, вроде Google Sheets или Microsoft Excel. Каждое новое значение добавляется в них как строка в таблицу. У каждого столбца этой таблицы задаётся значение и тип данных: имя пользователя - строка, возраст пользователя - число, является ли пользователь админом - булево значение, список друзей пользователя - объект и т д
NoSQL - могут хранить произвольный JSON. Это удобно и просто, но нет гарантий целостности и непротиворечивости данных и нет единой структуры данных. MongoDB - самая популярная NoSQL база данных