2020
Веб-приложение — распределённая система, использующая ресурсы двух приложений: веб-браузер и веб-сервер
Современные браузеры поддерживают следующие документы:
Выделим следующие ключевые задачи, которые необходимо решить при разработке веб-приложения
В рамках курса мы не будем:
HTML — Hyper Text Markup Language, язык разметки гипертекстовых документов
Данный язык является стандартом для представления структурированной текстовой и мультимедийной информации
Для описания элементов используется специальная нотация
<div>Короны есть не только у вирусов</div>< и ><div></, </div>HTML-документ представляет собою иерархию элементов, рассмотрим пример
<div>
  <p>Песня</p>
  <ul>
    <li>Текст</li>
    <li>Музыка</li>
  </ul>
</div>div, всё остальное является его содержимымdiv выступают элементы ul и pp содержит только текстul содержит 2 тега li, причём порядок их появления в тексте важенli содержат только текстПри описании HTML-узлов необходимо следить за корректностью вложенности
Корректное вложение:
<p>Мой кот <strong>очень</strong> пушистый.</p>Некорректное вложение:
<p>Мой кот <strong>очень пушистый.</p></strong>Закрывающий тег </strong> идёт после тега </p>
Большинство веб-браузеров смогут обработать некорректный код, но при этом могут делать это по-разному
Все элементы, которые мы помещаем в HTML-документ, предназначены для отображения информации пользователю
Для добавления информации для других разработчиков можно использовать комментарии
Комментарии начинаются с последовательности <!--
Комментарии заканчивается последовательностью --->
Пример комментария:
<!-- Это просто текстовый комментарий --->
<!-- <p> Тут тоже комментарий </p> --->Формируют видимый блоковый элемент на странице
Формируют описание для внутренней части блока
У каждого элемента помимо его содержимого можно указать также и атрибуты, которые поясняют его поведение
<table>
  <tr> <!-- Первая строка --->
    <td colspan="2">Ячейка на 2 стоблца</td>
  </tr>
  <tr> <!-- Вторая строка --->
    <td>Первый</td> <td>Второй</td>
  </tr>
</table>имя="значение", атрибуты разделяются пробеламиПо умолчанию следует использовать двойные кавычки для описания значения атрибута
<a href="http://www.example.com'>
  A link to my example.</a>Следите, чтобы внутри значения не встречались кавычки
<a href='http://www.example.com'
  title='Isn't this fun?'>
  A link to my example.</a>Данные атрибуты могут быть установлены для любого элемента документа
class — имя класса из таблицы стилей для элементаcontenteditable — определяет можно ли редактировать содержимого данного элементаhidden — должен ли данный элемент быть скрыт или нетid — определяет идентификатор элемента на странице, должен быть уникальным для страницыlang — определяет код содержимого в элементеstyle — содержит определение CSS-стилей для данного элементаtitle — определяет дополнительную подсказку об элементе для всплывающей подсказкеНекоторые элементы HTML-документов не имеют текстового содержимого. Для их описания достаточно указать только лишь открывающий тег и необходимые атрибуты
<img src="images/firefox-icon.png"
  alt="My test image">img — элемент для отображения изображения на страницеsrc — атрибут содержит ссылку на источник изображения, которое надо отобразитьalt — атрибут содержит текст, описывающий изображение, который используется если изображение не загрузилось и для обеспечения доступностиПо умолчанию при обработке документов все подряд непечатные символы заменяются на 1 пробела
Следующие выражения являются идентичными:
<p>Собаки очень весёлые</p>
<p>Собаки              очень
                 весёлые</p>Таким образом мы можем свободно форматировать документ, чтобы его структуру было удобно воспринимать
<!DOCTYPE html> <!-- Версия HTML-спецификации --->
<html>
  <head>
    <!-- Метаинформация о документе --->
  </head>
  <body>
    <!-- Содержимое документа --->
  </body>
</html>html является обязательным корневым элементом документаhead содержит информацию о содержимом: какой язык использован, какая кодировка у документа, откуда подгружать стилевые файлыbody включает собственно содержимое документа, которое отображается пользователюЗаголовок содержит описание содержимого документа
Кодировка символов в документе:
<meta charset="utf-8">Заголовок для отображения в браузере:
<title>Котики</title>Автор документа:
<meta name="author" content="Mikhail Markov">Краткое описание документа:
<meta name="description" content="Котики в природе">Иконка для отображения во вкладке браузера:
<link rel="shortcut icon" href="favicon.ico"
  type="image/x-icon">Заголовок приходит в браузер первым, поэтому важно размещать ссылки на другие важные документы в заголовке, чтобы браузер мог их начать скачивать
CSS-документы описывают стили, которые можно применять к различным элементам
<link rel="stylesheet" href="my-css-file.css">JavaScript-документы содержат динамический код для выполнения на стороне браузера
<script src="my-js-file.js"></script>Первые надо размещать в заголовке, а JS-код в конце
rel описывает тип ссылки, обязательно stylesheethref содержит ссылку на внешний документТегу html следует указать язык документа, так как это облегчает работу поисковых систем и систем помощи людям с ограниченными возможностями
Язык указывается в качестве значения тега lang:
<html lang="ru">Если у вас в документе несколько языков, то соответствующие блоки можно разметить с помощью элемента span:
<p>
  Пример английского:
  <span lang="en-US">The cats are cool</span>.
</p>Содержимое документа находится внутри элемента body
Язык HTML предлагает набор из различных элементов, которые позволяют структурировать информацию на странице
ph1, h2, h3, h4, h5, h6<h1>Документ о котиках</h1>
<p>Котики очень важны!</p>
<h2>Котики: начало</h2>
<p>Котики пушистые</p>
<h2>Котики: продолжение</h2>
<h3>Котолапки</h3>
<p>У котолапок есть когти</p>h3 должно следовать за h2, а не наоборотНенумерованный список
ulli<h1>Мои покупки</h1>
<ul>
  <li>Молоко</li>
  <li>Яйца</li>
  <li>Хлеб</li>
  <li>Сыр</li>
</ul>Нумерованный список
olli<h1>Мои котики</h1>
<ol>
  <li>Пёстрый</li>
  <li>Рыжик</li>
  <li>Кусак</li>
  <li>Белый</li>
</ol>Внутри содержимого элемента списка может находится другой список, эффективно делая его вложенным
При написании очень длинного текста, зачастую необходимо выделять различные части текста, чтобы читающий мог понять что в тексте важно, а что нет
Для выделения текста можно использовать строчный элемент em, сокращение от emphasis:
<p>Я <em>рад</em>, что вы не <em>опоздали</em></p>Для выделения текста жирным используется строчный элемент strong:
<p>Данная житкость <strong>очень токсичная</strong></p>В WYSWYG текстовых редакторах есть возможность указывать атрибуты текста: наклон, жирность, подчёркивание
В старых HTML-стандартах определены элементы i, b, u, которые по названию позволяют форматировать текст
В настоящий момент для оформления текста надо использовать CSS-стили
Если же хотите использовать данные элементы, то следует придерживаться следующих правил:
i следует использовать для оформления иностранных слов, терминов, цитату и т.д.b следует использовать для оформления ключевых слов, названий продуктов, вводных предложенийu зачастую использовать вообще не стоит, даже в печатных изданияхПри описании HTML-документа необходимо ссылаться на другие документы по их единому указателю ресурса, URL
aДля создания гиперссылки для пользователя используется элемент a: <a href="https://ya.ru">Поиск</a>
href содержит в себе ссылку на другой ресурсatitle предоставляет дополнительную информацию, которая будет показана пользователю при наведении на ссылку
<p>Создаём ссылку
  <a href="https://developer.mozilla.org"
     title="Информация для веб-разработчиков"
  >Mozilla developer network</a>
</p>a может включать в себя блоковые элементы, в том числе и изображения<a href="https://www.mozilla.org/ru/">
  <img src="mozilla-image.png"
   alt="Логотип Mozilla">
</a>Как и при работе с файловой системой можно формировать либо полные пути, либо относительные пути
https:/, file:/, либо с /Рассмотрим следующую структуру файлов
.
├── css
│   └── style.css
├── data.html
├── img
│   ├── cat.png
│   └── dog.gif
└── index.htmlОтносительные ссылки в файле index.html
<!--- Ссылка на data.html --->
<a href="data.html">...
<!--- Отображаем картинки --->
<img src="img/cat.png">
<!--- Подключаем стили --->
<link rel="stylesheet"
    href="css/style.css">По возможности используйте относительные пути
Текст ссылки должен хорошо описывать ссылку
<a href="https://ya.ru">
  Поискать интересного в интернете</a>
<a href="https://ya.ru">
  Нажмите на ссылку
</a>, чтобы поискать в интернетеНе добавляйте URL в текст ссылки
Ссылки должны состоять из пары-тройки слов
Используйте уникальный текст для каждой ссылки
Если по нажатию на ссылку пользователю необходимо скачать большой объём данных или требуется специальная технология, то пользователю необходимо сообщить об этом
<p><a href="http://www.example.com/report.pdf">
  Скачать большой отчёт (PDF, 10MB)
</a></p>
<p><a href="http://www.example.com/video-stream/"
      target="_blank">
  Посмотреть видео (поток, отдельная вкладка)
</a></p>
<p><a href="http://www.example.com/car-game">
  Играть в гонки (требует WASM)
</a></p>Ранее рассмотренные элементы структуры могут оказаться в различных частях страницы и нести разную смысловую нагрузку
<body>
  <header>Заголовок страницы</header>
  <nav>Навигация внутри страницы</nav>
  <main>Основное содержимое
    <article>Статья №1
      <header>Заголовок статьи</header>
      <section>Секция 1 статьи 1
        <header>Заголовок секции</header>
        <p>Содержимое</p>
      </section>
    </article>
    <aside>Боковая панель</aside>
  </main>
  <footer>Содержимое нижнего колонтитула</footer>
</body>