# Проект расширения для браузера, часть 1: Всё о браузерах ![Скетчноут браузера](../../../../translated_images/browser.60317c9be8b7f84adce43e30bff8d47a1ae15793beab762317b2bc6b74337c1a.ru.jpg) > Скетчноут от [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Викторина перед лекцией [Викторина перед лекцией](https://ff-quizzes.netlify.app/web/quiz/23) ### Введение Расширения для браузеров добавляют дополнительный функционал в браузер. Но прежде чем создавать своё расширение, стоит немного узнать о том, как работают браузеры. ### О браузере В этом цикле уроков вы научитесь создавать расширение для браузера, которое будет работать в Chrome, Firefox и Edge. В этой части вы узнаете, как работают браузеры, и создадите основу для элементов расширения. Но что такое браузер? Это программное приложение, которое позволяет пользователю получать контент с сервера и отображать его на веб-страницах. ✅ Немного истории: первый браузер назывался 'WorldWideWeb' и был создан сэром Тимоти Бернерс-Ли в 1990 году. ![ранние браузеры](../../../../translated_images/earlybrowsers.d984b711cdf3a42ddac919d46c4b5ca7232f68ccfbd81395e04e5a64c0015277.ru.jpg) > Некоторые из ранних браузеров, источник: [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) Когда пользователь подключается к интернету, используя адрес URL (Uniform Resource Locator), обычно через протокол передачи гипертекста `http` или `https`, браузер связывается с веб-сервером и получает веб-страницу. На этом этапе движок рендеринга браузера отображает её на устройстве пользователя, будь то мобильный телефон, настольный компьютер или ноутбук. Браузеры также могут кэшировать контент, чтобы не загружать его с сервера каждый раз. Они могут записывать историю посещений, сохранять "куки" — небольшие фрагменты данных, содержащие информацию о действиях пользователя, и многое другое. Важно помнить, что браузеры не одинаковы! У каждого свои сильные и слабые стороны, и профессиональный веб-разработчик должен понимать, как сделать веб-страницы удобными для работы в разных браузерах. Это включает в себя адаптацию для небольших экранов, таких как экраны мобильных телефонов, а также для пользователей, которые находятся в оффлайн-режиме. Очень полезный сайт, который стоит добавить в закладки в вашем любимом браузере, — это [caniuse.com](https://www.caniuse.com). При создании веб-страниц списки поддерживаемых технологий на этом сайте помогут вам лучше поддерживать ваших пользователей. ✅ Как узнать, какие браузеры наиболее популярны среди пользователей вашего сайта? Проверьте аналитику — вы можете установить различные аналитические пакеты в рамках процесса разработки, и они покажут, какие браузеры чаще всего используются. ## Расширения для браузеров Почему стоит создавать расширение для браузера? Это удобный инструмент, который позволяет быстро выполнять повторяющиеся задачи. Например, если вам часто нужно проверять цвета на веб-страницах, вы можете установить расширение для выбора цвета. Если вы забываете пароли, вам может помочь расширение для управления паролями. Создавать расширения для браузеров тоже интересно. Они обычно выполняют ограниченное количество задач, но делают это хорошо. ✅ Какие ваши любимые расширения для браузеров? Какие задачи они выполняют? ### Установка расширений Прежде чем начать разработку, ознакомьтесь с процессом создания и развертывания расширения для браузера. Хотя у каждого браузера есть свои особенности, процесс в Chrome и Firefox похож на этот пример для Edge: ![скриншот браузера Edge с открытой страницей edge://extensions и меню настроек](../../../../translated_images/install-on-edge.d68781acaf0b3d3dada8b7507cde7a64bf74b7040d9818baaa9070668e819f90.ru.png) > Примечание: Убедитесь, что включён режим разработчика и разрешена установка расширений из других магазинов. В общем, процесс будет следующим: - создайте расширение с помощью команды `npm run build` - откройте в браузере панель расширений через кнопку "Настройки и другое" (значок `...`) в правом верхнем углу - если это новая установка, выберите `load unpacked`, чтобы загрузить свежее расширение из папки сборки (в нашем случае это `/dist`) - или нажмите `reload`, если вы обновляете уже установленное расширение ✅ Эти инструкции относятся к расширениям, которые вы создаёте сами; чтобы установить расширения из магазина расширений браузера, перейдите в соответствующий [магазин](https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home) и установите нужное расширение. ### Начнём Вы создадите расширение для браузера, которое будет отображать углеродный след вашего региона, показывая энергопотребление и источник энергии. Расширение будет содержать форму для ввода API-ключа, чтобы вы могли получить доступ к API CO2 Signal. **Вам понадобится:** - [API-ключ](https://www.co2signal.com/); введите ваш email на этой странице, и ключ будет отправлен вам - [код вашего региона](http://api.electricitymap.org/v3/zones), соответствующий [Electricity Map](https://www.electricitymap.org/map) (например, для Бостона используется 'US-NEISO') - [стартовый код](../../../../5-browser-extension/start). Скачайте папку `start`; вы будете дополнять код в этой папке - [NPM](https://www.npmjs.com) — инструмент для управления пакетами; установите его локально, и пакеты, указанные в вашем файле `package.json`, будут установлены для использования в вашем проекте ✅ Узнайте больше о пакетных менеджерах в этом [отличном модуле Learn](https://docs.microsoft.com/learn/modules/create-nodejs-project-dependencies/?WT.mc_id=academic-77807-sagibbon) Посмотрите на структуру кода: dist -|manifest.json (здесь задаются настройки по умолчанию) -|index.html (здесь разметка HTML для фронтенда) -|background.js (здесь фоновый JS) -|main.js (собранный JS) src -|index.js (здесь ваш JS-код) ✅ Как только у вас будут API-ключ и код региона, сохраните их где-нибудь для дальнейшего использования. ### Создание HTML для расширения У этого расширения будет два представления. Одно для ввода API-ключа и кода региона: ![скриншот готового расширения, открытого в браузере, с формой для ввода региона и API-ключа](../../../../translated_images/1.b6da8c1394b07491afeb6b2a8e5aca73ebd3cf478e27bcc9aeabb187e722648e.ru.png) И второе для отображения углеродного следа региона: ![скриншот готового расширения, отображающего данные об углеродном следе и проценте ископаемого топлива для региона US-NEISO](../../../../translated_images/2.1dae52ff0804224692cd648afbf2342955d7afe3b0101b617268130dfb427f55.ru.png) Начнём с создания HTML для формы и её стилизации с помощью CSS. В папке `/dist` создайте форму и область для результатов. В файле `index.html` заполните область формы: ```HTML

New? Add your Information

``` Это форма, где сохранённая информация будет вводиться и сохраняться в локальном хранилище. Затем создайте область для результатов; под последним тегом формы добавьте несколько div: ```HTML
loading...

Region:

Carbon Usage:

Fossil Fuel Percentage:

``` На этом этапе вы можете попробовать сборку. Убедитесь, что установили зависимости пакетов для этого расширения: ``` npm install ``` Эта команда использует npm, менеджер пакетов Node, для установки webpack для процесса сборки вашего расширения. Вы можете увидеть результат этого процесса, заглянув в `/dist/main.js` — вы увидите, что код был собран. На данный момент расширение должно собраться, и если вы развернёте его в Edge как расширение, вы увидите аккуратно отображённую форму. Поздравляем, вы сделали первые шаги к созданию расширения для браузера. В следующих уроках вы сделаете его более функциональным и полезным. --- ## 🚀 Задание Зайдите в магазин расширений для браузера и установите одно из них. Вы можете изучить его файлы интересными способами. Что вы обнаружите? ## Викторина после лекции [Викторина после лекции](https://ff-quizzes.netlify.app/web/quiz/24) ## Обзор и самостоятельное изучение В этом уроке вы узнали немного о истории веб-браузеров; воспользуйтесь этой возможностью, чтобы узнать больше о том, как изобретатели Всемирной паутины представляли её использование, прочитав больше о её истории. Полезные ресурсы: [История веб-браузеров](https://www.mozilla.org/firefox/browsers/browser-history/) [История Интернета](https://webfoundation.org/about/vision/history-of-the-web/) [Интервью с Тимом Бернерсом-Ли](https://www.theguardian.com/technology/2019/mar/12/tim-berners-lee-on-30-years-of-the-web-if-we-dream-a-little-we-can-get-the-web-we-want) ## Задание [Измените стиль вашего расширения](assignment.md) **Отказ от ответственности**: Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.