Хабрахабр

[Из песочницы] HTML, который мы потеряли

Представляю вашему вниманию перевод статьи "The HTML we never had" автора Сергея Кучерова. Привет, Хабр!

С тех пор мы прошли долгий путь, начиная с восхищения новой технологией, и заканчивая лечением интернет-зависимости и цензурой. В этом году исполняется 30 лет с тех пор, как Бернерс-Ли начал разрабатывать язык HTML. Вы когда-нибудь задумывались, почему Сеть до сих пор остается такой нестабильной и уязвимой? Каких только бед не принес нам Интернет, взломанные пароли, кража личных данных, компьютерные вирусы, черви, а теперь даже вирусы-вымогатели. Давайте разбираться. Где-то на этом длинном пути мы свернули не туда?

0, опубликованный в 1993 году, включал всего 13 элементов (считая только те, которые сохранились до наших дней): HTML 1.

a, address, base, dd, dir, dl, dt, h1..h6, li, p, plaintext, title, ul

Именно он определяет функциональность, которая отвечает за первые две буквы в заголовке стандарта—гипертекст. Самый главный из них, разумеется, «anchor» (а). Именно эта способность отсылать пользователя к любому документу в мире с помощью универсального локатора ресурсов (URL), и создал это удивительное явление под названием World Wide Web. Без якорей (или ссылок) HTML был бы просто еще одним языком разметки текста. Спустя два года в HTML было добавлено еще несколько полезных элементов: html,head, body, а также элементы для создания форм, таблиц и изображений.

Дав браузеру возможность отображать не только текст, но и картинки, мы сделали новую технологию привлекательной не только для небольшой группы ученых и энтузиастов, но и для миллионов обычных пользователей. Последний элемент, сыграл, наверное, наиболее значительную роль в истории Интернета. Однако есть еще одна особенность этого элемента HTML, которая имеет историческое значение. Мы можем смело утверждать, что это нововведение даже подтолкнуло индустрию к повышению скорости интернета и его доступности для массового пользователя. Смотрите сюда:

<img src="http://ibm.com/ibm-logo.gif" />

Эта простая идея была ключом к великому изобретению. Так как нельзя встроить двоичное изображение в текстовый файл (по крайней мере, в то время), то элемент img снабжен атрибутом, который указывает на то место, где браузер может найти требуемый файл.

Ключом, который мы так никогда и не повернули.

0 был опубликован в ноябре 1995 года. HTML 2. Представьте себе это: Все были в восторге от новых возможностей, и наверное поэтому ни у кого не возникла мысль предложить: а почему бы нам не позволить всем остальным элементам HTML также использовать этот атрибут?

<h1 src="/website/info/title"> </h1>

Может быть, это не имеет смысла для такого маленького элемента, но как насчет div или article? Этот код означает, что содержание заголовка должно быть загружено из данного URL.

<article src="/parts/article/blog1298" />

Я знаю, что в 1993 году скорость Интернета была не такой высокой как сейчас. Ну а сейчас это имеет смысл? Тем не менее, не было никаких причин, чтобы не допустить такую ​​возможность в стандарте. Новые функции уже заняли большинство существующей полосы пропускания, да и протокол HTTP был не на высоте.

Сам по себе, возможно не такое уж и большое. Теперь вы, наверное, задумаетесь, а какое влияние этот атрибут мог бы оказать на будущее WWW? Когда браузер отображает страницу, он транслирует HTML-код в объектную модель документа (DOM) расположенную в памяти. Но если к нему добавить еще одну возможность, то результат мог бы разительно отличаться от того, что мы имеем сейчас. Даже в 1993 году программное обеспечение работало не так примитивно. Эта модель остается неизменной до тех пор, пока браузер не получит запрос заменить ее другим HTML-документом. Идея вычисления состояния документа, как функции данных вносимых пользователем, была уже хорошо известна и достаточно проста в реализации. В том году, когда Netscape Navigator пришел на смену браузеру Mosaic, программе Lotus 123 было уже десять лет, а VisiCalc-ку еще больше. Представьте, что бы было, если бы в HTML 2. К сожалению, никто не решился применить ее к браузерам. 0 появилась вот такая возможность:

<div id="name">George</div>
<h1>Welcome, $name</h1>

Например, приведенный выше код будет изображен в виде заголовка Welcome, George. Если в электронной таблице вы можете ссылаться на содержимое других ячеек, то HTML документ мог бы позволить использовать переменные, которые ссылаются на значения других элементов. Еще больше пользы переменные могли бы принести в URL:

<article src="http://server.com/blog/$name"></article>

А если значение элемента name изменится, то браузер обновит содержимое только этого одного элемента. Приведенный выше код загрузит содержимое статьи с URL http://server.com/blog/George. В этом случае, отпадает необходимость в использовании AJAX и JavaScipt. Как и сейчас, сервер несет ответственность за логику и генерацию HTML кода. Эта новая, до сих пор никем не предложенная функция, позволила бы легко реализовать окно поиска с динамическими подсказками:

<input list="find" type="text" id="term" />
<datalist id="find" src="http://server.com/search/$term" />

Чтобы сделать HTML еще более совместимым с электронными таблицами, нужно добавить возможность использовать функций: Очевидно, что вычислять выражения гораздо безопаснее, чем выполнять код встроенной программы, последствия которого трудно предсказать.

@CONCATENATE(first,", ",last);

Браузер автоматически рассчитывает изменения в DOM на основе данных, введенных пользователем. Нет необходимости в JavaScript, теневом DOM и других дорогих и крайне небезопасных функциях. Обидно, что нам потребовалось 26 лет, чтобы додуматься до этого. Сегодня мы называем это реактивным программированием. Не поздно-ли попробовать реализовать это сейчас?

Я так не думаю. Вы можете предположить, что последних версий HTML5 + CSS3 + JS вполне достаточно для современных нужд. А как насчет веб-компонентов? Мы все еще мучаемся с созданием даже простого пользовательского интерфейса, и вынуждены использовать запутанные JS библиотеки, вроде ​​Angular. Возможно. Смогут ли они сделать веб-программирование быстрее, проще и безопаснее? Все, что я знаю, что компоненты чрезвычайно легко реализуются поверх того стандарта HTML, которого у нас никогда не было. А может и нет. Разрешите представить вам элемент define:

<head> <define tag=“login” src=“http://server.com/components/login”> <define tag=“footer” src=“http://server.com/components/footer”>
</head> <body> <login toremember="yes" /> ... <footer />
</body>

Ресурс, загружаемый по адресу, указанному в URL компонента, является обычным HTML файлом. Вот и все. Такие веб-компоненты могут быть легко использованы не только на одном веб-сайте, но и в качестве стандартной библиотеки в Интернете. Он может содержать переменные, функции, а также ссылки на другие компоненты. JavaScript можно оставить, но в большинстве случаев он будет просто не нужен. Протокол HTTP/2 вводит много полезных возможностей, которые позволят новому HTML работать в полную силу. Когда в последний раз у вас была необходимость использовать макрос в электронной таблице?

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть