Skip to content

MaxParf/-JavaScript-

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instapro

MVP социальной сети для обмена фотографиями

Первоначальная оценка

Много много часов

Фактически затраченное время

YYYY часов

Сhecklist @TODO

index.js

  1. // @@TODO: реализовать получение постов юзера из API ГОТОВО

  2. // @TODO: реализовать добавление поста в API ГОТОВО

  3. // @TODO: реализовать страницу с фотографиями отдельного пользвателя ГОТОВО

add-post-page-component.js 4) // @TODO: Реализовать страницу добавления поста ГОТОВО

posts-page-component.js 5) // @TODO: реализовать рендер постов из api - ГОТОВО

  1. @TODO: чтобы отформатировать дату создания поста в виде "19 минут назад" можно использовать https://date-fns.org/v2.29.3/docs/formatDistanceToNow ГОТОВО

Анализ архитектуры работы и последовательности действий

Структура проекта Project/ |- api.js - работа с сервером (запросы GET, POST, загрузка файлов). |- favicon.ico |- helpers.js - вспомогательные функции (работа с LocalStorage для сохранения данных пользователя) |- index.html - оболочка |- index.js - управление рендером и навигацией @TODO #1-3 |- README.md |- routes.js - маршрутизатор |- styles.css |- ui-kit.css - стили кнопок инпутов и шрифтов |- assets/ | |- fonts/ | | |- stratosskyengweb-medium.woff2 | | |- stratosskyengweb-regular.woff2 | |- images/ | |- like-active.svg | |- like-not-active.svg |── components/ |- add-post-page-component.js - создание нового поста @TODO #4 |- auth-page-component.js - вход и регистрация |- header-component.js - шапка (навигация, логин, кнопки входа и выхода) |- loading-page-component.js - спинер загрузки данных с сервера |- posts-page-component.js - главная страница, рендер постов @TODO #5 и 6 |- upload-image-component.js - загрузка фоток

КАК ЭТО РАБОТАЕТ
  1. index.html запускает index.js.
  2. он в свою очередь определяет, на какой странице мы находимся (переменная page). Это либо:
  • AUTH_PAGE - страница авторизации.
  • ADD_POSTS_PAGE - добавление поста,
  • POSTS_PAGE, основная страница ну или
  • USER_POSTS_PAGE - профиль пользователя.
  1. Если мы на POSTS_PAGE или USER_POSTS_PAGE то нужны данные пользователя или сами посты, тогда вызывается функция из api.js. Пока мы ее ждем запускается LOADING_PAGE - спинер
  2. Когда мы их получили, index.js вызывает нужный нам component/
  • AUTH_PAGE - renderAuthPageComponent
  • ADD_POSTS_PAGE - renderAddPostPageComponent @TODO #2
  • POSTS_PAGE - renderPostsPageComponent
  • USER_POSTS_PAGE - здесь заглушка @TODO #1 и 3
  1. И он уже генерирует HTML-строку и вставляет её в appEl.innerHTML внутри оболочки index.html.

ИТАК ПЛАН РАБОТЫ

  1. Пока лента статична я не увижу динамику Оживить ленту в posts-page-component.js @TODO: реализовать рендер постов из api

Удаляем статичный HTML сохранив шаблон post. Добавляем map для связи с массивом posts который приходит из index.js и превращаем массив в строку HTML.

  1. Профиль пользователя: index.js
  • @TODO: реализовать получение постов юзера из API
  • @TODO: реализовать страницу с фотографиями отдельного пользвателя

Добявляем в api.js функцию getUserPosts для получения постов от конкретного пользователя и отправляем ее в index.js

Меняем логику получения постов для USER_POSTS_PAGE

  1. Интерфейс создания поста: add-post-page-component.js @TODO: Реализовать страницу добавления поста
  • Добавляем разметку страницы добавления поста
  • Добовляем шапку
  • И форму выбора фото с валидацией
  • И О Чудо активировались страницы входа и регистрации
  1. Теперь публикация. Возвращаемся в index.js - @TODO: реализовать добавление поста в API

В api добавляем функцию создания поста addPost В index добавляем импорт из нее и вызываем функцию в ADD_POSTS_PAGE

  1. И в конце когда все будет работать мы можем внести правку в posts-page-component.js @TODO: чтобы отформатировать дату создания поста в виде "19 минут назад" можно использовать https://date-fns.org/v2.29.3/docs/formatDistanceToNow

Подключил библиотеки для локолизации и форматирования даты публикации

ФИНАЛ Доп задание - Лайки Лайки можно ставить и удалять api добавим функции POST и DELETE

Импортируем функции в posts-page-component Добовляем обработчик кликов если не авторизован то ошибка в алерт

ГОТОВО

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 82.6%
  • CSS 16.4%
  • HTML 1.0%