Сообщения

Сообщения за август, 2020

Node Todolist

Изображение
Создание приложения, использующего NodeJS, Express, MongoDB. Источник  https://youtu.be/8bE_PBRriyU 1. Начало работы Инициализация нового приложения npm init -y Установка nodemon npm i nodemon -D В файле package.json прописываем скрипты для запуска приложения "scripts": {   "start": "node index",   "dev": "nodemon index" } Создаём файл index.js Устанавливаем и подключаем express и mongoose npm i express mongoose const express = require('express'); const mongoose = require('mongoose'); Создаём переменную app const app = express(); Создаём переменную PORT const PORT = process.env.PORT || 3000; Создаём сервер app.listen(PORT, () => {   console.log(`Server has been started on port ${PORT}`) }) Запускаем сервер командой npm run dev В консоли надпись  Server has been started on port 3000 Переходим по адресу  http://localhost:3000/  Там пока ничего

Node Jokes App

Изображение
Домашнее задание четвёртой темы курса Geekbrains Node JS. Необходимо создать веб-интерфейс, который позволяет получать данные из одного из нескольких сайтов (выбор возможен через форму) и указывать количество новостей на страницу. Устанавливаем модули - express - фреймворк для быстрого создания приложения - consolidate - для подключения handlebars - шаблонизатора для создания динамических страниц - request - для парсинга данных - cheerio - для фильтрации полученных в ходе парсинга данных Подключаем модули const express = require('express'); const consolidate = require('consolidate'); const path = require('path'); const request = require('request'); const cheerio = require('cheerio'); const { promisify } = require('util'); Создаём переменные Для того чтобы запрос приходил в виде промиса к которому можно применить функцию async/await const promisifyRequest = promisify(request); Порт, по которому будет работать приложе

Деплой NodeJS на Heroku

Изображение
Видео:  https://youtu.be/wG7hX8Np1Pg В приложении меняем порт 3000 на process.env.PORT: const  PORT  =  process.env.PORT  ||   8080 Регистрируемся на Heroku  https://www.heroku.com/ Устанавливаем Heroku CLI  https://devcenter.heroku.com/articles/heroku-cli Проверяем, что Heroku CLI установился. Пишем в терминале  heroku  Выполняем команды: heroku create git init heroku git:remote -a app-name git add . git commit -m "feat: create node.js app" git push heroku master heroku open Открывается созданное приложение Команда  heroku create  сгенерирует ссылку с рандомным названием. Указать название приложения можно на этом же шаге  heroku create  unique-app-name или позже Если название в момент создания приложения не было дано, найти его можно в ответе heroku Переименовать приложение можно на странице настроек  https://dashboard.heroku.com/apps/node-jokes-app/settings Указываем новое название приложения, затем в терминале выполняем две команды g

Geekbrains Node JS. Урок 4. Фреймворк Express

Изображение
Express закрывает около 80% всех вопросов по созданию приложений на node.js Устанавливаем express npm i express Подключаем, создаём приложение, создаём сервер const express = require("express"); const app = express(); app.get("/", (req, res) => {   res.send("Hello world"); }); app.listen(3000, () => {   console.log("Server has been started!"); }); По адресу  http://localhost:3000/  наш сервер Рассмотрим функцию  app.get Это get-запрос к серверу. Такой запрос отправляем, когда просто открываем страницу. Первый параметр - ссылка на ту страницу, которую открываем. Косой слэш это главная страница -  http://localhost:3000/ . А, например, адрес '/user' это страница  http://localhost:3000/user Второй параметр - функция с двумя параметрами  req ,  res req  - request - запрос, который мы отправляем к серверу. res  - responce - ответ, который сервер возвращает нам request содержит параметры запроса к серверу Н

Geekbrains Node JS. Урок 3. Работа с сетевыми запросами

Изображение
Исходящие запросы Для отправки запросов в node.js есть два встроенных модуля http и httrs const  http  =   require ( 'http' ); const  https  =   require ( 'https' ); Пример отправки GET запроса: const  http  =   require ( 'http' ); http. get ( "http://www.google.com/" , ( res )  =>  {   console. log ( "Got response: "   +  res.statusCode); }). on ( 'error' , ( e )  =>  {   console. log ( "Got error: "   +  e.message); });  const  https  =   require ( 'https' ); https. get ( 'https://geekbrains.ru' , ( res )  =>  {   console. log (res.statusCode); }). on ( 'error' , ( err )  =>  {   console. log (err); }); Пример отправки POST запроса: const  http  =   require ( "http" ); const  options  =  {   hostname:  "www.google.com" ,   port:  80 ,   path:  "/upload" ,   method:  "POST" , }; const

Geekbrains Node JS. Урок 2. Консольные программы

Изображение
Асинхронность В качестве примера асинхронного кода используем следующий код function getRequest() {   setTimeout(() => {     const res = 10;     return res;   }, 1000) } Как получить результат res из функции getRequest? Вариант 1. Используем callback - функцию обратного вызова function getRequest(callbackFn) {   setTimeout(() => {     const res = 10;     callbackFn(null, res)    }, 1000) } getRequest((err, res) => {   if(err) console.log(err)   console.log(res) }) Использование callback - распространённая практика. Но если таких функций много и они связаны между собой, их использование затруднено/ Может получиться большая вложенность функций. То. что называют callback hell - ад из колбеков. Такой код сложно поддерживать, в нём сложно находить ошибки, и так писать не принято. Поэтому появились промисы. Вариант 2. Используем промисы const promice = new Promise((resolve, reject) => {   setTimeout(() => {     resolve();   }, 1000); });