Skip to content

bmstustudent/mesto

Repository files navigation

место фото

Краткое описание:

Проект разрабатывается студентом курса "Яндекс-Практикум". Место- сайт, где можно делиться фотографиями.

Внешние компоненты

Для работы с проектом вам понадобятся git, NodeJS

Локальная установка:

В командной строке перейдите в папку, где будет развернут проект. После чего скопируйте его с GitHub: $ git clone https://github.com/bmstustudent/mesto.git

Далее переходим в папку с проектом и устанавливаем компоненты: $ npm install

После этого нужно собрать проект: $ npm run build

Далее можно запускать проект на локальном сервере: $ npm run dev

В конфигурационном файле package.json настроены три варианта запуска сборки проекта:

$ npm run build - для компиляции. Проект собирается локально, продукты сборки сохряняются в указанной директории.

$ npm run dev - для отладки. Помимо сборки, запускает на локальном сервере с автоматической <<горячей>> перезагрузкой при детектировании изменений в исходных кодах.

$ npm run deploy - для релиза. Выкладывает релизную версию в ветку gh-pages указанного репозитория.

Установка сборщика (Webpack)

npm init - добаляет дефолтный конфигурационный файл package.json

npm i webpack --save-dev - устанавливает пакет webpack в проект, записывает его в зависимости для разработки

npm i webpack-cli --save-dev - устанавливает пакет интерфейса командной строки для webpack'а

npm i webpack-dev-server --save-dev - устанавливает пакет локального сервера

Установка транспилятора (Babel)

npm i babel-loader --save-dev - устанавливает пакет транспилятора

Дополнительные пакеты для работы с транспилятором:

npm i @babel/cli --save-dev

npm i @babel/core --save-dev

npm i @babel/preset-env --save-dev

npm i core-js@3.4.1 --save

npm install --save babel-polyfill - устанавливает полифилы для транспилятора

Установка минификатора

npm i mini-css-extract-plugin --save-dev - устанавливает пакет минификатора

npm i css-loader --save-dev - устанавливает пакет CSS-загрузчика

Установка "горячей" перезагрузки

npm i webpack-md5-hash --save-dev - устанавливает пакет подсчёта хеша

Установка обработчика CSS-загрузчика

npm i postcss-loader --save-dev - устанавливает пакет подключения плагина PostCSS к Webpack'у

npm i autoprefixer --save-dev - установщик вендорных префиксов

npm i cssnano --save-dev - минификатор CSS

Деплой

npm install gh-pages --save-dev - выкладывает проект на gh-pages

npm install html-webpack-plugin --save-dev - "учит" вебпак работать с HTML

npm install --save-dev cross-env - пакет для использования глобальных переменных

Оптимизация изображений

npm install file-loader --save-dev - плагин, позволяющий webpack'у работать с различными файлами

npm install image-webpack-loader --save-dev - загрузчик изображений

Работа со стилями в зависимости от сборки

npm i style-loader --save-dev - нужен для подтягивания в финальную сборку стилей, добавленных через @import

npm install --save-dev @babel/plugin-proposal-class-properties - преобразует свойства классов

Не обязательны для данного проекта

npm i optimize-css-assets-webpack-plugin --save-dev - нужен для дополнительной оптимизации CSS

npm i path --save-dev - предоставляет утилиты для работы с путями к файлам и директориям

Макет предоставлен Yandex-praktikum:

Макет 4

Макет 5

Макет 6

Макет 9

Фотографии брал с сайта

Unsplash

Спринт-4:

Вёрстка:

  • добавлен попап редактирования профиля
  • предусмотренно переполнение содержимого в блоке

JavaScript:

  • реализованно открытие и закрытие попапа
  • поля формы заполненны значениями, которые отображаются на странице
  • реализованно редактирование имени и информации о себе

Спринт-5:

  • при загрузке на странице есть 6 карточек, которые добавляет JavaScript
  • реализованна форма добавления карточки
  • возможность ставить лайк карточке
  • удаление карточки
  • реализованно открытие попапа с картинкой (zoom)

Спринт-6:

Реализованна возможность:

  • валидация формы «Редактировать профиль»
  • валидация формы «Новое место»
  • закрытие попапа кликом на оверлей
  • закрытие попапа нажатием на Esc

Спринт-7:

Создание класса Card

  • принимает в конструктор её данные и селектор её template-элемента;
  • содержит приватные методы, которые работают с разметкой, устанавливают слушателей событий;
  • содержит приватные методы для каждого обработчика;
  • содержит один публичный метод, который возвращает полностью работоспособный и наполненный данными элемент карточки.

Создание класса FormValidator:

  • принимает в конструктор объект настроек с селекторами и классами формы;
  • принимает вторым параметром элемент той формы, которая валидируется;
  • имеет приватные методы, которые обрабатывают форму: проверяют валидность поля, изменяют состояние кнопки сабмита, устанавливают все обработчики;
  • имеет один публичный метод enableValidation, который включает валидацию формы.

Разбивка JavaScript на модули:

  • классы Card и FormValidator экспортируются из соответствующих файлов, импортируются в index.js и используются в нём
  • отдельные js-файлы подключены в index.html как модули

Спринт-8:

Рефакторинг кода:

  • создание класса Section, который отвечает за отрисовку элементов на странице.
  • создание класса Popup, который отвечает за открытие и закрытие попапа.
  • создание класса PopupWithImage, который наследует от Popup. Этот класс перезаписывает родительский метод open. В методе open класса PopupWithImage нужно вставлять в попап картинку и атрибут src изображения и подпись к картинке.
  • создание класса UserInfo: отвечает за управление отображением информации о пользователе на странице.
  • настроена сборка вебпаком

Спринт-9:

Подключение проекта Mesto к серверу.

По вопросам доработки сайта

Пример, как работает открыть/закрыть popup:

alt gif