ExtMan RU : Что "под капотом"
Опубликовано: Бармалей · 31.12.2017 · 00:03 ••• Обновление: 12.08.2020 · 07:21 0

В этой статье достаточно упрощённо, "на пальцах", рассказано об основных технических особенностях построения расширения ExtMan RU. Почему "на пальцах" – да просто потому, что "профи" могут всё это увидеть самостоятельно в исходном коде аддона, поэтому и подача этого материала сделана не для них, а для "чисто конкретно интересующихся обычных граждан"…)

Итак, поехали…


Исходный код, интерфейс и API

Код использует только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги.

Все скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.

Расширение не запрашивает лишних разрешений, работает полностью автономно и не занимает память в покое.

Всё управление работой расширения осуществляется через попап-окно, вызываемое по щелчку на иконке на тулбаре. Для вызова окна попапа применяется API chrome.browserAction.

Окно можно открыть и в отдельной вкладке, по желанию – в закреплённой. Обе эти опции задаются в Настройках.

Интерфейс окна предельно прост и интуитивно понятен, для всех "кликабельных" элементов добавлены тултипы и подсказки. Текущая индикация работы расширения – через его значок на тулбаре (бэджик и подсказка значка).

Для облегчения освоения аддона добавлена подгружаемая Справка, описывающая основные возможности ExtMan'а, вызов – щелчок по красной звёздочке () в правом верхнем углу окна расширения.

Блок Настроек всех основных и дополнительных опций и функций, включая управление параметрами самого ExtMan'а, открывается в этом же окне, поверх списка установленных аддонов. В манифесте расширения отдельная страница настроек не указана – в связи с её отсутствием.)

Для отрисовки интерфейса попапа и страницы настроек не используются никакие сторонние JS/CSS библиотеки, весь интерфейс работает на чистом HTML с минимально необходимым набором стилей и скриптов. Язык интерфейса, сообщений, подсказок и описания – только русский (жёстко зашит в коде).

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

Основные функции управления работой аддона и запуском отдельных модулей размещены в автовыгружаемом фоновом скрипте emstart.js.

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

Основной API, используемый в аддоне – chrome.management, непосредственно отвечающий за управление всеми установленными дополнениями (расширениями, приложениями и темами), а также за проверку и отслеживание всех изменений этих дополнений. Другие разрешения в манифесте аддона не запрашиваются.

При установке/удалении или изменении состояния других аддонов выполняется опциональная запись о событии в лог и обновление бэджика и подсказки к значку ExtMan'а на тулбаре. С целью оптимизации работы браузера в код аддона добавлена функция ускоренной выгрузки фонового процесса из памяти после выполнения таких действий.

Для текущего хранения загруженных фильтров и подписок используется API chrome.storage, в манифесте аддона это разрешение не запрашивается в силу достаточности объёма по умолчанию для хранимых собственных настроек (менее 5Mb). Хранение настроек – только в локальном хранилище самого аддона, синхронизация не применяется.

Для открытия вкладок в браузере (например, стандарьной страницы chrome://extensions) применяется API chrome.tabs.

Аддон не имеет практических ограничений по версии браузера, все используемые API работают в версиях 22+ (версии ниже 22 не поддерживают часть используемых API). Неподдерживаемые в старых версиях функции управления автоматически отключаются во избежание ошибок.

Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках и для облегчения читаемости кода при его исследовании. Если это критично – удалите комментарии и пропустите через компрессоры.)



Технические детали Бармалей
Бармалей 31.12.2017 12.08.2020 229 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:22+
Протестировано в:SRWare Iron 31/36/49
Технологии и API:Чистый JavaScript (ES5), API: management, runtime, tabs, browserAction

Поделиться

Всего комментариев: 0
close