' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
В этой статье даны пояснения по основным концепциям разработки расширения Агрегатор поисковых машин, описаны общие принципы системы выпуска экспериментальных версий (ECR), а также приведены некоторые технические подробности и особенности применения аддона.
В этой статье:
При работе с расширением и, особенно, при выполнении различных настроек, пользователь должен чётко представлять себе смысл и назначение каждой опции или функции. Это позволит избежать отдельных проблем и "непоняток" при эксплуатации "Агрегатора". Для лучшего понимания что, как и зачем "крутить", следует не только читать встроенные подсказки к отдельным опциям, но и уметь самостоятельно разбираться в отдельных вопросах.
Агрегатор предназначен в первую очередь для пользователей, желающих получить в своё распоряжение максимальное число доступных сервисов поиска. При этом у каждого пользователя есть возможность полностью настроить требуемые сервисы под свои конкретные задачи, а также создать "под себя" необходимое множество вариантов поисковых шаблонов, подстраивая их под вполне конкретные частные условия применения.
Тем не менее, при всей объёмности доступных настроек АПМ остаётся простым в применении и нетребовательным к ресурсам приложением. Работать с АПМ можно практически на любом браузере семейства Chromium (минимальная "теоретическая" версия – не ниже 27, рекомендуемая – 31 и новее). Кроме того, АПМ не имеет никаких фоновых процессов и не потребляет ресурсов кроме как на момент вызова его интерфейсной части (окон поиска или настроек).
Код использует только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги.
Все скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.
Всё управление работой расширения осуществляется через попап-окно, вызываемое по щелчку на иконке на тулбаре. Интерфейс прост и интуитивно понятен, для всех "кликабельных" элементов добавлены тултипы и подсказки.
Страница настроек всех основных и дополнительных опций и функций, включая управление параметрами поиска и самого АПМ, может быть открыта либо в этом же попапе, либо в отдельной вкладке.
В текущих версиях АПМ в манифесте расширения отдельная страница настроек не указана – исключительно в связи с тем, что гораздо удобнее (и быстрее!) вызвать Настройки "в один клик" прямо со значка на тулбаре.)
Для отрисовки интерфейса попапа и страницы настроек не используются никакие сторонние JS/CSS библиотеки, весь интерфейс работает на чистом HTML с минимально необходимым набором стилей и скриптов. Язык интерфейса, сообщений, подсказок и описания – только русский (жёстко зашит в коде).
Расширение имеет модульную структуру скриптов, загружаемых по необходимости. Выгрузка модулей и очистка занимаемой ими памяти производится автоматически – как только прекращается использование конкретного модуля (например, при закрытии окна ввода поискового запроса). Это снижает общий текущий расход памяти и позволяет достаточно легко добавлять новые возможности и функции в системе "ECR".
Для вызова попапа (или окна настроек вместо него) применяется API chrome.browserAction. Для выполнения действий на веб-страницах применяется API chrome.tabs (опциональное разрешение). Также применяется разрешение activeTab, упрощающее отдельные контекстные действия на текущих страницах.
Для текущего хранения всех пользовательских настроек используется API chrome.storage, в манифесте АПМ это разрешение отдельно не указывается в силу достаточности объёма хранимых данных по умолчанию.
Для обеспечения корректной работы отдельных дополнительных функций аддона с любыми хостами и протоколами в манифесте запрашивается опциональное разрешение "<all_urls>". Для обеспечения работы с локальными файлами пользовательских данных (экспорт/импорт, иконки, стили интерфейса и настройки) указано разрешение "file:///*/*".
При обработке частных стилей оформления интерфейса, заданных пользователем, все CSS-правила сохраняются как текст, сохранение (экспорт/импорт) пользовательских настроек – в json-формате.
Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 27+.
Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках и для облегчения читаемости кода при его исследовании. Если кому-то это критично – удалите комментарии и пропустите через компрессоры.)
При разработке применяется специальная система выпуска версий – ECR или "экспериментальная концепт-версия". Термин введён автором и применяется не только для "Агрегатора", но и для других расширений.
ECR – это система развития дополнительного функционала, позволяющая енд-юзеру выбрать именно ту версию, которая подходит ему больше всего. При этом каждое из таких "ответвлений" является полноценным продуктом, обеспечивающим решение основной задачи (ввод и выполнение поисковых запросов).
ECR – это экспериментальная версия расширения, имеющая одну или несколько "нестандартных фишек", направленных на повышение удобства использования и/или использующих "нестандартный" способ решения отдельных типовых задач.
ECR отличается от "стабильной" версии только способом реализации функций, работоспособность кода в целом гарантируется точно также, как и в "обычных" версиях – в ECR не применяются нестабильные или "новомодные" фишки, которые могут послужить причиной возникновения ошибок или иных проблем у пользователя.
Проще говоря, ECR – это не отладочный "дев-билд", это именно отработка концепций иных способов решения каких-либо задач в браузере, поэтому ECR-версии могут использоваться для повседневной работы точно также, как и любые стабильные версии.
Все ECR-версии также выпускаются под одним ID, что позволяет сохранять преемственность настроек при переходе от одной к другой (с учётом прямой совместимости отдельных настроек и применяемых функций).