1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-eloquent-js-3e-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
13.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:25 369bafd

中,我们将一个&字符后跟着一个单词和分号(;)这种写法称为一个实体,浏览器会使用实体编码对应的字符替换它们。

С этим сходен способ использования обратной косой черты в JavaScript-строках. Поскольку механизм сущностей HTML придаёт & особое значение, нам нужно использовать & для представления символа &. Для вставки фактического символа кавычек в значении атрибута (заключённого в двойные кавычки) можно использовать ".

Процесс разбора HTML очень устойчив к ошибкам. Когда обязательные теги отсутствуют, браузер перестраивает эти теги. Перестройка тегов стандартизирована, и вы можете считать, что поведение всех современных браузеров одинаково.

Следующий файл будет отображать тот же эффект, что и предыдущая версия:

<!doctype html>
<meta charset=utf-8>
<title>My home page</title>

<h1>My home page</h1>
<p>Hello, I am Marijn and this is my home page.
<p>I also wrote a book! Read it
  <a href=http://eloquentjavascript.net>here</a>.

<html>, <head> и <body> могут быть полностью опущены. Браузер знает, что <meta> и <title> принадлежат заголовку, а <h1> принадлежит основному тексту. Кроме того, мне больше не нужно явно закрывать абзац, потому что браузер автоматически закрывает тег абзаца при начале нового абзаца или завершении документа. Кавычки вокруг целевых ссылок также можно опустить.

В этой книге обычно опускаются теги <html>, <head> и <body>, чтобы сохранить исходный код кратким и избежать чрезмерной сложности. Но я буду явно закрывать все теги и включать кавычки по обе стороны от атрибутов.

Эта книга также часто игнорирует doctype и charset объявления. Это не поощрение игнорировать их. Когда вы забываете о них, браузер часто делает странные вещи. Вы должны думать о doctype и charset метаданных как о неявных в примерах, даже если они не отображаются явно в тексте.

HTML и JavaScript

Для этой книги наиболее важным HTML-тегом является <script>. Этот тег позволяет нам включать JavaScript-код в документ.

<h1>Testing alert</h1>
<script>alert("hello!");</script>

Когда браузер читает HTML, он выполняет этот код, как только встречает тег <script>. Эта страница будет отображать диалоговое окно при открытии — функция alert похожа на prompt, поскольку она отображает небольшое окно, но показывает только одно сообщение без запроса ввода.

Непрактично включать большие программы в HTML-документ. Тег <script> может иметь атрибут src, который получает скрипт-файл (содержащий текст JavaScript-программы) с другого URL.

<h1>Testing alert</h1>
<script src="code/hello.js"></script>

Содержащийся здесь файл code/hello.js представляет собой ту же программу, что и выше, alert("hello"). Когда страница включает другие URL в качестве части себя (например, файлы изображений или сценарии), веб-браузер немедленно получит эти ресурсы и включит их в страницу.

Даже если тег script ссылается на текстовый файл и не содержит никакого кода, вы должны использовать </script> для закрытия тега. Если вы забудете об этом, браузер будет анализировать оставшуюся часть страницы как часть скрипта.

Вы можете загружать ES-модули в браузере (см. главу 10), предоставляя тегу script атрибут type ="module". Эти модули могут зависеть от других модулей, ссылаясь на их URL относительно своего собственного в import объявлениях.

Некоторые атрибуты также могут содержать JavaScript-программу. Приведённый ниже тег <button> (отображающий кнопку) имеет атрибут onclick. Значение этого атрибута будет выполняться при нажатии кнопки.

<button onclick="alert('Boom!');">DO NOT PRESS</button>

Обратите внимание, что мы использовали одинарные кавычки в строке внутри атрибута onclick, потому что мы используем двойные кавычки для всего атрибута. Мы также можем использовать &quot;.

Песочница

Выполнение программ, загруженных из интернета, сопряжено с потенциальными рисками. Вы не знаете большинство разработчиков веб-сайтов, и они не обязательно действуют в ваших интересах. Как только вы запустите программу, предоставленную кем-то, кто не имеет благих намерений, ваш компьютер может заразиться вирусом, и эти программы также могут украсть данные и украсть учётные записи.

Но привлекательность сети заключается в том, что вы можете просматривать веб-сайты, не доверяя всем им. Вот почему браузеры строго ограничивают возможности JavaScript — JavaScript не может просматривать какие-либо файлы на вашем компьютере или изменять данные, которые не связаны с текущей страницей.

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

Проблема с реализацией песочницы заключается в следующем: с одной стороны, мы хотим предоставить программам определённую свободу действий, чтобы они были полезны, но мы также хотим ограничить программы, чтобы предотвратить выполнение ими опасных действий. Многие полезные функции (такие как связь с сервером или чтение содержимого буфера обмена) также представляют проблемы, которыми злоумышленники могут воспользоваться для проникновения на ваш компьютер.

Время от времени кто-нибудь придумывает новый метод взлома ограничений браузера и нанесения ущерба вашему компьютеру, от кражи небольшого количества личных данных до получения контроля над всем компьютером браузера. Ответ разработчиков браузера заключается в исправлении уязвимостей и восстановлении нормальной работы. До тех пор, пока следующая проблема не будет обнаружена и широко распространена, некоторые правительства или секретные организации могут тайно использовать эти уязвимости.

Совместимость и война браузеров

На заре развития веб-технологий одна программа под названием Mosaic доминировала на рынке. Несколько лет спустя это равновесие было нарушено компанией Netscape, а затем её вытеснил Internet Explorer от Microsoft. В любое время, когда один браузер доминировал на рынке, поставщики браузеров чувствовали, что у них есть право в одностороннем порядке разрабатывать новые функции для сети. Поскольку большинство людей использовали один и тот же браузер, веб-сайты начали использовать эти уникальные функции и перестали заботиться о проблемах совместимости с другими браузерами.

Это была тёмная эпоха совместимости, которую мы обычно называем войной браузеров. Разработчики сети всегда были разочарованы отсутствием унифицированных веб-стандартов и необходимостью учитывать две-три несовместимые платформы. Что ещё хуже, примерно с 2003 года используемые браузеры были полны уязвимостей, причём разные браузеры имели разные уязвимости. Жизнь веб-разработчиков была довольно трудной.

Mozilla Firefox, ответвление некоммерческого характера от Netscape, начала бросать вызов господству Internet Explorer в конце 90-х годов. В то время Microsoft не уделяла особого внимания конкуренции, что позволило Firefox быстро завоевать значительную долю рынка. Тем временем Google выпустил свой браузер Chrome, а Apple популяризировал Safari, в результате чего сейчас существует четыре основных конкурента, а не один доминирующий.

Новые участники более серьёзно относятся к стандартам и имеют лучшую инженерную практику, что снижает нашу несовместимость и ошибки. Microsoft, увидев, что его доля рынка стремительно падает, принял эту позицию в своём браузере Edge, заменив Internet Explorer. Если вы начинаете изучать веб-разработку сегодня, считайте, что вам повезло. Поведение основных браузеров очень согласовано, и ошибок относительно мало.

Однако это не означает, что проблем больше нет. Некоторые пользователи, из-за лени или политики компании, вынуждены использовать старые версии браузеров. Пока эти браузеры полностью не исчезнут с рынка, создание веб-сайтов для старых версий всё ещё требует знания многих необычных функций и понимания недостатков и особенностей старых браузеров. Эта книга не обсуждает эти особенности, а фокусируется на представлении современного и надёжного стиля проектирования сетевых программ.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-eloquent-js-3e-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-eloquent-js-3e-zh.git
oschina-mirror
wizardforcel-eloquent-js-3e-zh
wizardforcel-eloquent-js-3e-zh
master