============================================================================================================
- Создан репозиторий
goit-js-hw-08
. - При сдаче домашней работы есть две ссылки: на исходные файлы и рабочую страницу на
GitHub Pages
. - При посещении живой страницы задания, в консоли нету ошибок и предупреждений.
- Проект собран с помощью parcel-project-template.
- Код отформатирован
Prettier
.
Скачай стартовые файлы
с готовой разметкой, стилями и подключенными файлами скриптов для каждого задания. Скопируй их себе
в проект, полностью заменив папку src
в
parcel-project-template.
Выполняй это задание в файлах 01-gallery.html
и 01-gallery.js
. Разбей его на несколько подзадач:
- Добавь библиотеку SimpleLightbox как зависимость проекта используя
npm
(ссылка на CDN из твоей прошлой работы больше не нужна). - Используй свой JavaScript код из предыдущей домашней работы, но выполни рефакторинг с учетом
того, что библиотека была установлена через
npm
(синтаксис import/export).
Для того чтобы подключить CSS код библиотеки в проект, необходимо добавить еще один импорт, кроме того который описан в документации.
// Описан в документации
import SimpleLightbox from 'simplelightbox';
// Дополнительный импорт стилей
import 'simplelightbox/dist/simple-lightbox.min.css';
В HTML есть <iframe>
с видео для Vimeo плеера. Напиши скрипт который будет сохранять текущее время
воспроизведения видео в локальное хранилище и, при перезагрузке страницы, продолжать воспроизводить
видео с этого времени.
<iframe
id="vimeo-player"
src="https://player.vimeo.com/video/236203659"
width="640"
height="360"
frameborder="0"
allowfullscreen
allow="autoplay; encrypted-media"
></iframe>
Выполняй это задание в файлах 02-video.html
и 02-video.js
. Разбей его на несколько подзадач:
- Ознакомься с документацией библиотеки Vimeo плеера.
- Добавь библиотеку как зависимость проекта через
npm
. - Инициализируй плеер в файле скрипта как это описано в секции pre-existing player, но учти что у тебя плеер добавлен как npm пакет, а не через CDN.
- Разбери документацию метода on() и начни отслеживать событие timeupdate - обновление времени воспроизведения.
- Сохраняй время воспроизведения в локальное хранилище. Пусть ключом для хранилища будет строка
"videoplayer-current-time"
. - При перезагрузке страницы воспользуйся методом setCurrentTime() для того чтобы возобновить воспроизведение с сохраненной позиции.
- Добавь в проект бибилотеку lodash.throttle и сделай так, чтобы время воспроизведения обновлялось в хранилище не чаще чем раз в секунду.
В HTML есть разметка формы. Напиши скрипт который будет сохранять значения полей в локальное хранилище когда пользователь что-то печатает.
<form class="feedback-form" autocomplete="off">
<label>
Email
<input type="email" name="email" autofocus />
</label>
<label>
Message
<textarea name="message" rows="8"></textarea>
</label>
<button type="submit">Submit</button>
</form>
Выполняй это задание в файлах 03-feedback.html
и 03-feedback.js
. Разбей его на несколько
подзадач:
- Отслеживай на форме событие
input
, и каждый раз записывай в локальное хранилище объект с полямиemail
иmessage
, в которых сохраняй текущие значения полей формы. Пусть ключом для хранилища будет строка"feedback-form-state"
. - При загрузке страницы проверяй состояние хранилища, и если там есть сохраненные данные, заполняй ими поля формы. В противном случае поля должны быть пустыми.
- При сабмите формы очищай хранилище и поля формы, а также выводи объект с полями
email
,message
и текущими их значениями в консоль. - Сделай так, чтобы хранилище обновлялось не чаще чем раз в 500 миллисекунд. Для этого добавь в проект и используй библиотеку lodash.throttle.
============================================================================================================
Включите отображение скрытых файлов и папок в проводнике своей операционной системы, иначе вы не сможете выбрать и скопировать себе файлы настроек проекта, имена которых начинаются с точки.
На компьютере должена быть установлена LTS-версия Node.js со всеми дополнительными инструментами кроме Chocolatey - его ставить не нужно.
Один раз на проект установить все зависимости.
npm ci
Запустить режим разработки.
npm run dev
Во вкладке браузера перейти по адресу http://localhost:1234.
Сборка будет автоматически собирать и деплоить продакшен версию проекта на GitHub Pages, в ветку
gh-pages
, каждый раз когда обновляется ветка main
. Например, после прямого пуша или принятого
пул-реквеста. Для этого необходимо в файле package.json
отредактировать поле homepage
и скрипт
build
, заменив имя_пользователя
и имя_репозитория
на свои.
"homepage": "https://имя_пользователя.github.io/имя_репозитория",
"scripts": {
"build": "parcel build src/*.html --public-url /имя_репозитория/"
},
На всякий случай стоит зайти в настройки репозитория Settings
> Pages
и убедиться что продакшен
версии файлов раздаются из папки /root
ветки gh-pages
.
Через какое-то время живую страницу можно будет посмотреть по адресу указанному в отредактированном
свойстве homepage
, например
https://goitacademy.github.io/parcel-project-template.
- Все паршалы файлов стилей должны лежать в папке
src/sass
и импортироваться вsrc/sass/main.scss
- Изображения добавляйте в папку
src/images
, заранее оптимизировав их. Сборщик просто копирует используемые изображения чтобы не нагружать систему оптимизацией картинок, так как на слабых компьютерах это может занять много времени.