Git Product home page Git Product logo

elrouss / mesto Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 3.65 MB

Учебный frontend-проект "Место" с применением нативных технологий (подключение к серверу с реализацией основного функционала популярных соцсетей: Instagram, Facebook, VKontakte)

CSS 28.99% HTML 13.09% JavaScript 57.92%
css3 html5 js-es6 yandex-praktikum api bem-methodology elrouss webpack frontend

mesto's Introduction

Учебный frontend-проект: "Место"

Оглавление
  1. Описание проекта
  2. Стек технологий
  3. Установка и запуск проекта в локальном репозитории
  4. Процесс создания
  5. Функционал
  6. Планы по улучшению

1. Описание проекта

Данная проектная работа выполнена в рамках образовательной программы Яндекс Практикума. Проект представляет собой создание адаптивного одностраничного сайта с профилем пользователя и фотокарточками - аналога популярных соцсетей - с применением нативных технологий (HTML5, CSS3, JS). В рамках учебного курса он был также портирован на "React" и расширен добавлением функционала регистрации и авторизации пользователей

* - проект прошел код-ревью

2. Стек технологий

Иконка JavaScript Иконка CSS3 Иконка HTML5 Иконка 'Webpack'

3. Установка и запуск проекта в локальном репозитории

  1. git clone https://elrouss.github.io/mesto.git - клонировать репозиторий (с использованием HTTPS) на свое устройство
  2. npm i - установить зависимости
  3. npm run dev - запустить приложение в режиме разработчика (в браузере ввести ссылку http://localhost:8080/, если приложение не открылось там автоматически)

4. Процесс создания

Работа разделена на 6 этапов:

  1. Верстка, реализация открытия и закрытия модального окна с возможностью редактирования данных профиля
  2. Интерактивные элементы страницы: добавление и удаление карточки, лайки, открытие фотографии карточки в отдельном модальном окне, плавное открытие и закрытие попапов
  3. Валидация форм, закрытие модальных кликом по оверлею и нажатием на клавишу "Escape"
  4. Начало рефакторинга (переход к классам): добавление компонентов Card и FormValidator, разбиение на модули, директивы import & export
  5. Завершение рефакторинга: структуризация проекта, переписывание функций под 5 новых классов (Section, Popup, PopupWithImage, PopupWithForm, UserInfo), сборка проекта Вебпаком
  6. Подключение к серверу: загрузка информации о пользователе, обновление аватара, загрузка карточек (добавление и удаление), счетчик лайков, улучшение UX всех форм

4.1 Основные задачи, проблемы и их решение

Самой трудной частью этого проекта был переход от функционального подхода к классовому: это потребовало прочтения большого количества как основного учебного материала, так и дополнительного. В отдельных случаях терялся контекст (this): проблема решалась использованием стрелочных функций. Кроме того, следовало постоянно отслеживать навешивание и снятие (!) обработчиков событий, в противном случае возникали ошибки (одна из - создание одновременно нескольких карточек при сабмите формы)

5. Функционал

Адаптивный интерфейс Гиф с демонстрацией адаптивного интерфейса приложения
Редактирование данных пользователя Гиф с демонстрацией редактирования данных пользователя
Обновление аватара Гиф с демонстрацией обновления аватара пользователя
Добавление новой карточки Гиф с демонстрацией добавления новой карточки
Добавление и снятие лайка (включая счетчик лайков) Гиф с демонстрацией добавления и снятия лайка (включая счетчик лайков)
Удаление карточки с модальным окном подтверждения действия Гиф с демонстрацией удаления карточки
Модальное окно с увеличенной фотографией карточки Гиф с демонстрацией модального окна с увеличенной фотографией карточки
Открытие и закрытие модальных окон (по кнопке, оверлею и клавише "Escape") Гиф с демонстрацией открытия и закрытия модального окна
Спиннеры загрузки Гиф с демонстрацией спиннера загрузки на примере модального окна с обновлением аватара
Валидация форм Гиф с демонстрацией валидации формы на примере модального окна с обновлением аватара

6. Планы по улучшению

  1. Оптимизировать страницу для людей с ограниченными возможностями (напр., label для инпутов форм)
  2. Реализовать периодическое автоматическое обновление фотогалереи (без блика)
  3. Сделать сабмит форм нажатием на клавишу "Enter" (в настоящий момент работает только в случае клика пользоватем по полю формы)
  4. Запретить передачу пустых строк в полях форм

mesto's People

Contributors

dependabot[bot] avatar elrouss avatar

Stargazers

 avatar

Watchers

 avatar  avatar

mesto's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.