Skip to content

Creation of API, GUI as well as command line interface using ES5 / ES7 JavaScript. Latest version rewritten in TypeScript

License

Notifications You must be signed in to change notification settings

pestsov-v/node-js-without-frameworks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Создание приложений на Node.js без фреймворков

Данное приложение затрагивает реализацию как интерфейса командной строки (command line interface - далее CLI), графический интерфейс (Graphic user interface - далее GUI), проще говоря - frontend часть сайта так и набор эндпоинтов (application programming interface - далее API), проще говоря Backend часть сайта.

Приложение написано на JavaScript ES5 синтаксисе в без архитектурного стиля в первой версии. Переписано на ES7 синтаксис со слоеной, модульной, архитектурой во второй версии. И переписано вновь уже на typescript в третьей версии приложения.

Предназначение и стек технологий

Приложение предназначено для подробного описания и реализации приложений на Node.js без использования фреймворков, а также реализация приложений на различных синтаксисах JavaScript и языке TypeScript Стек технологий:

  • платформа Node.js
  • fs / path - для работы с файлами
  • crypto - для шифрования паролей
  • url - для работы с URL адресом запроса
  • dns - для проверок существующих IP адресов сайтов
  • os / v8 - для вывода статистики по работе системы
  • readline - для создания CLI
  • child_process - для создания отдельного процесса под тяжелые задачи
  • zlib - для сжатия файлов логирования
  • http / https - для взаимодействия backend и frontend части посредством работы с протоколами
  • util - для создания различных debug режимов, для разделения обработки ошибок в различных частях системы

Запуск приложения

Предлагается три варианта запустить и протестировать приложение: Запуск через архив на хост машине, и запуск непосредственно через Heroku instance (при запуске через Heroku будет запущена обрезанная версия приложения - без CLI и работы с API).

Запуск на хост машине

Чтобы запустить приложение на локальной хост машине, необходимо скачать проект из Git-репозитория и разархивировать его, после чего:

  • Если версия проекта v1.0.0 или v2.0.0, то зайти в папку server и запустить проект с помощью команды: node index.js.
  • Если версия проекта v3.0.0, то зайти в папку server и запустить проект с помощью команды: npm run dev.

Запуск через Heroku

Перейти по ссылке.

Оглавление

Здесь описан краткий обзор версии. Чтобы посмотреть полную информацию о версии нажмите: v1.0.0 - JavaScript ES5

Топорный вариант работы, когда весь модуль находится в одном файле. Использование var, а главный архитектурный вариант работы - создание объектов - контейнеров, куда как свойства добавляются методы - анонимные функции-callback.

Результат? Разработка проходит быстро и топорно, но само приложение является абсолютно не масштабируемым, поскольку через больше становится глобальные объекты - контейнеры, тем сложнее поддерживать его зависимости.

Здесь описан краткий обзор версии. Чтобы посмотреть полную информацию о версии нажмите: v2.0.0 - JavaScript ES7

Архитектурный вариант, когда сущности разделены, а каждый элемент сущности выведен в отдельный свой файл. Простым языком, если в первой версии все сущности были внутри одного объекта - контейнера, то теперь каждая сущность - это отдельная ветка с кодом. Сам код является слоёным: все константы и строковые значения вынесены в отдельным файл, работа с базой данных или файловой системой в файл сервиса, который реализовывает только эту логику и т.д.

Результат? Разработка проходит средне по времени, но само приложение является масштабируемым, поскольку сущности и функционал разделен как и файлами, так и классами.

В разработке

Application programming interface (API)

API предоставляет следующие возможности:

  • Отправка ответа со строкой запроса, при запросе на несуществующий эндпоинт
  • Сущность пользователей
    • Создание пользователя
    • Чтение пользователя по его номеру телефона.
    • Изменения данных пользователя по его номеру телефона.
    • Удаление пользователя по его номеру телефона.
  • Сущность токена
    • Создание токена
    • Чтение токена по его ID.
    • Изменения данных токена по его ID.
    • Удаление токена по его ID.
  • Сущность чека
    • Создание чека в массиве пользователя, который авторизировался
    • Чтение всех токенов конкретного пользователя.
    • Изменения данных конретного чека пользователя.
    • Удаление чека пользователя.

Command line interface (CLI)

Подробнее про организацию кода и архитектуру командной строки можно почитать Здесь.

Интерфейс запускается после разворачивания всех основных задач, таким как обработчики логирования (Worker) и непосредственно сами веб сервера с http и https протоколами. При запуске интерфейса командной строки выводится сообщение: "Интерфейс командной строки успешно запущен".

cli-init.png

Командная строка под капотом использует модуль readline и работу events, который на основе событий - ключевого слова команды, отдаёт ту или иную информацию.

Команды интерфейса командной строки

Команда help - позволяет получить список и описание всех команд.

cli-help.png

Команда stats - позволяет получить информацию по нагрузке и использованию ресурсов операционной системы.

cli-stats.png

Команды list users и more user info --{userId} позволяют получить список зарегистрированных пользователей, а также детали по каждому конкретному пользователю.

cli-lsit-users.png

Команды list checks и more checks info --{checkId} позволяют получить список всех чеков в базе данных, а также детали по каждому конкретному чеку.

cli-lsit-checks.png

Команды list logs и more log info --{logId} позволяют получить список всех файлов логирования, а также детали по каждому конкретному файлу логирования.

cli-list-logs.png

Graphical user interface (GUI)

Графический интерфейс состоит из нескольких страничек и машрутизации между ними.

Подробнее про организацию кода и архитектуру GUI можно почитать Здесь.

Страницы графического интерфейса

Главная страница

main.png

Страница регистрации

registration.png

Страница логина

login.png

Страница создания чека

creat-check.png

Страница доски с чеками

dashboard.png

Страница настроек профиля

settings.png

About

Creation of API, GUI as well as command line interface using ES5 / ES7 JavaScript. Latest version rewritten in TypeScript

Topics

Resources

License

Stars

Watchers

Forks