Давайте знакомиться!
Алексей
Тюльдюков
Почта@Mail.Ru
Анатолий
Остапенко
Почта@Mail.Ru
Дмитрий
Дорофеев
Почта@Mail.Ru
Сергей
Володин
Почта@Mail.Ru
Давайте знакомиться #2!
Александр
Цветков
Почта@Mail.Ru
Игорь
Дружинин
Почта@Mail.Ru
Что такое Frontend?
это вёрстка, HTML и CSS?
Что такое Frontend?
Frontend — публичная часть web-приложений, с которой непосредственно
контактирует и взаимодействует пользователь. Во Frontend входят отображение пользовательского интерфейса,
функционал, выполняющийся на стороне клиента, и обработка пользовательских запросов
Так же можно встретить название "client-side"
Что такое web-приложение?
Web-приложение — клиент-серверное приложение, в котором клиентом
выступает в основном браузер, а сервером — web-сервер. Логика веб-приложения распределена между
сервером и клиентом, хранение данных осуществляется преимущественно на сервере, обмен информацией происходит
по сети
Примеры web-приложений — vk.com, google.com, facebook.com...
Что такое Frontend-разработка?
Frontend-разработка — это работа по созданию публичной части
веб-приложения, с которой непосредственно контактирует пользователь, и функционала который обычно выполняется
на стороне клиента
Семестровый проект #1
Мультиплеерная игра в браузере
- Меню приложения
- Формы входа и регистрации
- Таблица лидеров
- Туториал и правила игры
- Страничка с профилем пользователя, загрузка юзерпиков
- Игра (сингл- и мультиплеер)
Семестровый проект #2
Веб-приложение
- Формы входа и регистрации
- Страничка с профилем пользователя, загрузка юзерпиков
- И индивидуальный подход к требованиям, экранам и функциональности
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Примеры семестровых проектов
Могли бы быть
семестровыми проектами
Менторы
Менторы
- Приятель
- Наставник
- Менеджер
- Справочное бюро
Наша Dream-team Менторов
- Палий Дмитрий — разработчик, Главная@Mail.Ru
- Камолдинова Виктория — разработчик, Почта@Mail.Ru
- Тарасов Владислав — разработчик, Почта@Mail.Ru
- Байков Юрий — разработчик, Почта@Mail.Ru
- Голубев Юрий — разработчик, Почта@Mail.Ru
- Пешков Сергей — разработчик, Почта@Mail.Ru
- Невтриносова Евгения — разработчик, Почта@Mail.Ru
- Зайцев Дмитрий — разработчик, Ответы@Mail.Ru
- Морозенков Олег — разработчик, группа разработки авторизации в Mail.Ru
- Барсуков Сергей — разработчик, Юла
Наша Dream-team Менторов
- Парпибаева Надежда — Яндекс.Новости
- Липко Дмитрий — студент 3 семестра
- Гаджиев Кирилл — студент 3 семестра
- Казанцева Ксения — студент 3 семестра
- Пучнина Анастасия — разработчик мультимедийных систем
- Пряхин Владимир — разработчик, Ростелеком
- Попонкин Дмитрий — разработчик, KTS Studio
Проблемы
Структура курса
- Модуль 1 — 4 занятия + РК1
- Модуль 2 — 4 занятия + РК2
- Совместная предзащита
- Хакатон
- Модуль 3 — 2 занятия + РК3
- Модуль 4 — 2 занятия + РК4
- Защита проекта
Первый модуль
- Введение во Frontend
- Работа с DOM, браузерные события, работа с сетью
- Модульность, разработка компонентов, шаблонизация
- Безопасность web-приложений, архитектура web-приложений и разработка API
РК 1, оценивается в 20 баллов
Второй модуль
- Архитектура web-приложений, роутинг, методологии написания CSS
- Производительность web-приложений и работа с данными в браузере, WebSockets, HTTP/2
- Графика и разработка веб-приложений
- ЛЕКЦИЯ: Современное состояние JavaScript
РК 2, оценивается в 30 баллов
Третий модуль
- Современные возможности CSS, разработка под мобильные устройства
- ЛЕКЦИЯ: Продвинутые подходы разработки SPA
РК 3, оценивается в 15 баллов
Четвёртый модуль
- Отслеживание проблем производительности web-приложений, инфраструктура и деплой web-приложений, практики DevOps
- ЛЕКЦИЯ: Резюме Frontend-разработчика в 2019 году
РК 4, оценивается в 10 баллов
Что по чём?
- Домашнее задание №0-1
5 баллов
- Домашнее задание №0-2
5 баллов
- Рубежный контроль №1
20 баллов
- Рубежный контроль №2
30 баллов
- Хакатон
10 баллов
- Рубежный контроль №3
15 баллов
- Рубежный контроль №4
10 баллов
- Защита проекта
5 баллов
Максимальная сумма баллов за семестр —
100 баллов
Как проходит рубежный контроль
- Выполнение всех (или части) ДЗ в модуле
- Отправка мерж-реквеста
не позднее, чем за сутки
до РК
- Code review, допуск от ментора
- Проверка работы приложения, проверка ДЗ
- Беседа с преподавателем, решение задач, теоретические вопросы
Критерии оценивания
- Продуктовая часть — выполнение вашей командой требований к проекту
- Индивидуальная часть — ваши личные знания дисциплины
- Дополнительные баллы:
- замутили фичу, которая выходит за рамки нашего курса
- ответили на сложный вопрос, нестандартно подошли к решению задачи
за красивые глаза всё стихийно 😅
Итоговая оценка
-
0 <= "неудовлетворительно"
<= 69
-
70 <= "удовлетворительно"
<= 84
-
85 <= "хорошо"
<= 99
- "отлично"
=== 100 баллов + выступление на защите
Дополнительные критерии (sic!)
Для получения оценки
удовлетворительно
, необходимо следующее:
- Корректно работающая авторизация и регистрация пользователей
- Приложение представляет собой клиентское SPA
- Современный подход к написанию кода приложения
- В приложении присутствует и используется шаблонизация
- В приложении присутствует роутинг
- В приложении присутствует singleplayer-версия игры
- Приложение должно быть доступно в Интернете
- Используются современные инструменты и методологии вёрстки
- Приложение должно корректно отображаться и работать на мобильных устройствах и устройствах
с сенсорным экраном
Дополнительные критерии (sic!)
Для получения оценки
хорошо
, необходимо также:
- В приложении должен присутствовать multiplayer
- В приложении должен присутствовать обмен данными с сервером через WebSocket-соединение
- В приложении должна присутствовать возможность редактирования профиля и загрузки юзерпиков
- Приложение должно уметь запускаться и работать offline
- Приложение должно быть оптимизировано, в приложении должен быть настроен автоматический CI
- Приложение должно быть задеплоено на VPS
Дополнительные критерии (sic!)
Для получения оценки
удовлетворительно
, необходимо следующее:
- Выполнить индивидуальные требования, выданные преподавателем
- Сделать законченный продукт, решающий проблему пользователя
Дополнительные критерии (sic!)
Для получения оценки
хорошо
, необходимо также:
- Использовать продвинутые Web API (WebVR / Web Crypto / Geolocation API / etc)
- Использовать продвинутые технологии (Typescript / Electronjs / IndexedDB / etc)
За что отвечает Frontend
- Создание пользовательского интерфейса
- Программирование той логики приложения, которая исполняется на клиенте
- Программирование приложения
- Тестирование приложения (от обычных юнит-тестов до интеграционных и нагрузочных тестов)
- Настройка и программирование процесса сборки приложения
- Деплой приложения
- etc...
Особенности работы
- 2–4 человека в команде
- Каждый вносит общий вклад в создание проекта
- Работа ведётся в наших репозиториях под руководством ваших менторов
- Запрещено использовать любые сторонние клиентские библиотеки
- К проекту не предъявляется никаких требований по кроссплатформенности и кроссбраузерности
Мы всех отчислим 💩
Теория клиент-серверного взаимодействия
Порядок работы
Клиент-серверная модель
Клиент – серверная модель — вычислительная или сетевая архитектура,
в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и
заказчиками услуг, называемыми клиентами
Структура web-приложений: этап 1
Структура web-приложений: этап 1
-
Frontend
- Отображение статических HTML-страниц (HTML, CSS)
- Контент на страницах, переходы по гиперссылкам
-
Backend
- Хранение статических документов и отдача по запросу по протоколу HTTP
На данном этапе сайты назывались web-ресурсами
Структура web-приложений: этап 2
Структура web-приложений: этап 2
-
Frontend
- Отображение статических HTML-страниц (HTML, CSS)
- Контент на страницах, переходы по гиперссылкам
- Взаимодействие с сервисом посредством форм
-
Backend
- Хранение статических документов и отдача по запросу по протоколу HTTP
- Обработка пользовательских запросов и генерация динамических страниц
- Хранение данных в базе данных
На данном этапе сайты назывались web-сервисами
Структура web-приложений: этап 3
Структура web-приложений: этап 3
-
Frontend
- Хранение и доступ к статическому контенту (файлы стилей, скрипты)
- Генерация и отображение пользовательского интерфейса
- Взаимодействие с пользователем и выполнение запросов к API
- Обновление пользовательского интерфейса в ответ на действия пользователя
-
Backend
- Реализация публичного API
- Хранение данных в базе данных и работа с ними
Сейчас такие сайты правильно называть web-приложениями
Современные web-приложения
В какой ОС разрабатывать?
В любой, где доступны git и Node.js:
- Windows
- OS X
- Linux (Ubuntu/Debian)
- Что то ещё?
Хостинг репозиториев github.com
- Бесплатный
- Совместная работа над проектом
Бесплатный хостинг now.sh
- Бесплатный (есть и платная версия)
- Большие возможности по деплою приложений
- Поддерживает JavaScript (с помощью Node.js) и все остальные языки через Docker
Что находится внутри браузера?
Ограничения JS в браузере
- Нельзя взаимодействовать с файловой системой
- Нет доступа к сетевым функциям, кроме того, что предоставляет сам браузер
- Нет возможности организовывать многопоточные вычисления. Есть воркеры, но они имеют определённые ограничения
- Нельзя создавать новые процессы / запускать программы (открытие новых вкладок не считается)
Node.js
Node.js — программная платформа, основанная на движке V8 (транслирующем
JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего
назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через
свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая
вызовы к ним из JavaScript-кода
Демонстрация использования
// script.js
const fs = require('fs');
const text = fs.readFileSync('script.js', 'utf8');
console.log(text);
Запуск скрипта
~$ node script.js <ENTER>
const fs = require('fs');
const text = fs.readFileSync('script.js', 'utf8');
console.log(text);
~$
npm — Node Packaged Modules
npm — is the package manager for JavaScript
Использование
~$ npm install md5 <ENTER>
~$
Можно создать свой собственный
npm-модуль!
~$ mkdir awesome && cd awesome <ENTER>
~$ npm init -y <ENTER>
~$ ls
package.json
~$
Содержимое package.json
{
"name": "awesome",
"version": "1.0.0",
"description": "",
"main": "index.js",
"keywords": [],
"author": "",
"license": "ISC"
}
Домашнее задание
- Разбиться на команды по 2–4 человека и отметиться в нашем посте "Перепись населения":
- С вами свяжется ваш ментор
- Ментор создаст вам репозиторий
- Дальше ментор расскажет вам, что делать
- Уже в командах разработать и задеплоить прототип вашего web-приложения:
- Сверстать макеты страниц приложения (ДЗ №0-2 индивидуально)
- Написать сервер, раздающий их и задеплоить результат