Агрегатор поисковых машин : Что "под капотом"
Опубликовано: Бармалей · 27.12.2013 · 00:02 ••• Обновление: 30.01.2021 · 10:03 0

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

В этой статье:


Основные концепции и подходы к разработке

  • Максимально простой и дружественный интерфейс для облегчения использования "обычным" юзером.
  • Удобное управление контекстными настройками основного окна поиска, быстрый доступ ко всем настройкам.
  • Дополнительные опции, связанные с повышением удобства и простоты решения задач поиска в целом.
  • Максимально возможная "кастомизация" интерфейса аддона под потребности конкретного пользователя.
  • Решение задач "нестандартными" способами, позволяющими расширить общий функционал приложения.
  • Отсутствие внешних программных библиотек, разработка кода полностью на чистом JavaScript (ES5).
  • Расширяемая модульная структура аддона, позволяющая изменять и добавлять новый функционал.

Условия и особенности применения

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

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

Тем не менее, при всей объёмности доступных настроек АПМ остаётся простым в применении и нетребовательным к ресурсам приложением. Работать с АПМ можно практически на любом браузере семейства Chromium (минимальная "теоретическая" версия – не ниже 27, рекомендуемая – 31 и новее). Кроме того, АПМ не имеет никаких фоновых процессов и не потребляет ресурсов кроме как на момент вызова его интерфейсной части (окон поиска или настроек).


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

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

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

Всё управление работой расширения осуществляется через попап-окно, вызываемое по щелчку на иконке на тулбаре. Интерфейс прост и интуитивно понятен, для всех "кликабельных" элементов добавлены тултипы и подсказки.

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

В текущих версиях АПМ в манифесте расширения отдельная страница настроек не указана – исключительно в связи с тем, что гораздо удобнее (и быстрее!) вызвать Настройки "в один клик" прямо со значка на тулбаре.)

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

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

Для вызова попапа (или окна настроек вместо него) применяется API chrome.browserAction. Для выполнения действий на веб-страницах применяется API chrome.tabs (опциональное разрешение). Также применяется разрешение activeTab, упрощающее отдельные контекстные действия на текущих страницах.

Для текущего хранения всех пользовательских настроек используется API chrome.storage, в манифесте АПМ это разрешение отдельно не указывается в силу достаточности объёма хранимых данных по умолчанию.

Для обеспечения корректной работы отдельных дополнительных функций аддона с любыми хостами и протоколами в манифесте запрашивается опциональное разрешение "<all_urls>". Для обеспечения работы с локальными файлами пользовательских данных (экспорт/импорт, иконки, стили интерфейса и настройки) указано разрешение "file:///*/*".

При обработке частных стилей оформления интерфейса, заданных пользователем, все CSS-правила сохраняются как текст, сохранение (экспорт/импорт) пользовательских настроек – в json-формате.

Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 27+.

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


Версии в системе ECR – Experimental Concept Release

При разработке применяется специальная система выпуска версий – ECR или "экспериментальная концепт-версия". Термин введён автором и применяется не только для "Агрегатора", но и для других расширений.

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

ECR – это экспериментальная версия расширения, имеющая одну или несколько "нестандартных фишек", направленных на повышение удобства использования и/или использующих "нестандартный" способ решения отдельных типовых задач.

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

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

Все ECR-версии также выпускаются под одним ID, что позволяет сохранять преемственность настроек при переходе от одной к другой (с учётом прямой совместимости отдельных настроек и применяемых функций).



Технические детали Бармалей
Бармалей 27.12.2013 30.01.2021 289 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 31/49, 360 Extreme Explorer 11/12 (CR-69/78)
Технологии и API:Чистый JavaScript (ES5), API: tabs, browserAction

Поделиться

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