forked from FrontenderMagazine/everyone-has-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
100 lines (84 loc) · 8.06 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>У всех есть JavaScript, да?</title>
<link rel="stylesheet" href="styles.css">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="manifest" href="manifest.json">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
<meta name="theme-color" content="#ffffff">
</head>
<body>
<h1>У всех есть JavaScript, да?</h1>
<dl class="graph">
<dt>Пользователь набрал в браузере URL веб-приложения.</dt>
<dt>Страничка загрузилась?</dt>
<dd><div>«Ни у одного пользователя нет JS, пока не скачались скрипты» — <a href="https://t.co/uTM3255RuW">Джейк Арчибальд</a></div></dd>
<dt>HTTP-запросы получения скриптов выполнены успешно?</dt>
<dd><div>Если пользователь едет в поезде и соединение пропадает до того, как загрузились скрипты, то считайте, что JavaScript у него нет.</div></dd>
<dt>HTTP-запросы получения скриптов завершились?</dt>
<dd><div>Сколько раз вы сталкивались с тем, что мобильный браузер вечно грузил страничку и загружал её мгновенно после обновления?</div></dd>
<dt>Корпоративный файервол не блокирует JavaScript?</dt>
<dd><div>Я спрашиваю об этом потому, что многие из них именно так и делают. До сих пор.</div></dd>
<dt>Интернет-провайдер или мобильный оператор не изменяет скачиваемый JavaScript?</dt>
<dd><div><a href="http://www.theguardian.com/technology/2014/jan/28/sky-broadband-blocks-jquery-web-critical-plugin">Sky случайно блокировал jQuery</a>, <a href="http://aaron-gustafson.com/notebook/2014/the-network-effect/">Comcast добавляет рекламу в скрипты</a>, и если вы с этим не сталкивались, то поезжайте в аэропорт и попробуйте использовать там wifi.</div></dd>
<dt>Пользователи не отключили JavaScript?</dt>
<dd><div>Люди <a href="https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/">всё ещё так делают</a>.</div></dd>
<dt>У пользователя нет плагинов или расширений, которые вставляют скрипты или меняют DOM там, где вы этого точно не ожидаете?</dt>
<dd><div>Есть тысячи браузерных расширений. Вы уверены, что они ничего не делают с вашим JS?</div></dd>
<dt>CDN работает?</dt>
<dd><div>Суть CDN именно в том, чтобы быть <em>надежным</em>, но <a href="http://www.cdnperf.com/">минута в месяц, когда он не работает</a> всё же оставит без скриптов тех пользователей, кто в эту минуту загружают вашу страничку.</div></dd>
<dt>Браузер поддерживает JavaScript который вы написали?</dt>
<dd><div>Воспользуйтесь <a href="http://caniuse.com/">Can I Use</a>, чтобы проверить.</div></dd>
<dt>
Такого никогда не случается?
</dt>
<dd><div>
Кто-то на медленном компьютере.
</div><div>
Кто-то на медленном соединении.
</div><div>
Кто-то на телефоне, то есть на медленном компьютере с медленным соединением.
</div><div>
Кто-то застрял со старым браузером на компьютере, который он не контролирует — на работе, в школе, в библиотеке и т. д.
</div><div>
Кто-то пытается написать небольшую программу, которая взаимодействует с вашим сайтом, у которого нет API.
</div><div>
Кто-то пытается загрузить копию вашего сайта, чтобы почитать в офлайне.
</div><div>
Кто-то — это кэш Google или Архив Интернета.
</div><div>
Кто-то сломал графическое окружение в Linux и пытается выяснить, как его починить, загружая статьи с вашего сайта через браузер командной строки Elinks.
</div><div>
Кто-то внёс изменения в ваш сайт с помощью пользовательского скрипта, и это мешает вашему собственному коду.
</div><div>
Кто-то использует NoScript и видит на вашем сайте только пустой экран. Он настолько раздражён, что просто уходит, а не вносит ваш сайт в белый список.
</div><div>
Кто-то использует NoScript и вносит в белый список вас, но не один из десятков трекеров, которые вы используете. Позже вы случайно ставите скрипт в зависимость от трекера, и он таинственным образом больше не работает для таких пользователей.
</div><div>
Вы даёте критически важному скрипту название, связанное с рекламой, и он не загружается у десятков миллионов пользователей с блокировщиками рекламы.
</div><div>
Ваш CDN упал.
</div><div>
У вашего CDN есть адрес IPv6, но на самом деле он не работает (да, видели такое и у компаний стоимостью в миллиард долларов, и у федерального правительства). Заходит кто-то по IPv6, страница загружается, но JS вылетает по таймауту.
</div><div>
Ваш деплой идёт немного неудачно, и JavaScript повреждается.
</div><div>
Вы случайно использовали новую функцию, которая не работает в предыдущей версии самого популярного браузера. Выводится синтаксическая ошибка, и ни один из ваших сценариев не запускается.
</div><div>
Вы прямо вводите синтаксическую ошибку, и никто не замечает, пока она не попадает в продакшн.
</div></dd>
<dt>
<p>Вы на все вопросы ответили «да»?</p>
<p>Тогда, да, JavaScript работает. <strong>Возможно.</strong></p>
</dt>
<dd><div>
<p><a href="http://jakearchibald.com/2013/progressive-enhancement-still-important/">Прогрессивное улучшение</a>. Потому что иногда JavaScript просто не работает.</p>
<p>Стоит быть к этому готовым.</p></div>
</dd>
</dl>
</body>
</html>