Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

  •   Изменение и расширение приложений Mozilla

 

Дополнения добавляют новые функциональные возможности в Gecko-приложения, такие, как Firefox, SeaMonkey и Thunderbird. Есть два основных типа дополнений: расширения, которые добавляют новые функции в приложение, и темы, изменяющие пользовательский интерфейс приложения.

Для расширений и тем в Mozilla работает хранилище на addons.mozilla.org, также известное как AMO. Когда вы помещаете дополнения на AMO, они рассматриваются, и после этого становятся доступны для пользователей. Вы не обязаны загружать свои дополнения в AMO, но если вы это сделаете, пользователи могут быть уверены в том, что они были предварительно проверены и будут знать, что ваше дополнение действительно полезно.

Дополнение может существенно повлиять на поведение приложения, на которое оно устанавливается. Мы разработали список советов, которые помогут вам удостовериться, что ваше дополнение будет приятным в использовании. Эти правила применяются для всех видов надстроек, независимо от того, размещены они на addons.mozilla.org или нет.


Расширения

Расширения добавляют новые функции к приложениям Mozilla, например таким как Firefox и Thunderbird. С их помощью можно изменить стандарное поведение браузера, например реализовать другой способ организации и управления вкладками. Можно даже изменять содержимое отображаемого веб приложения, чтобы улучшить удобство использования или например повысить безопасность определенных сайтов.

Существует 3 различных способа сборки расширений: restartless-расширения на основе Add-on SDK, restartless-расширения с реализацией этого механизма вручную (manually bootstrapped restartless extensions), и расширения с использованием технологии Overlay.

Технология WebExtensions

В данный момент мы разрабатываем систему под названием WebExtensions, которая будет новым способом разработки расширений для браузера Firefox, эта система будет гораздо более совместима с браузерами Chrome и Opera.

В будущем она станет наиболее предпочтительной при разработке новых проектов для браузера Firefox.

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

Где это возможно, рекомендуется выбирать Add-On SDK, который использует механизм расширения без необходимости перезапуска браузера (restartless extensions), а также упрощает разработку и убирает за собой. Если Вам недостаточно возможностей комплекта средств разработки Add-on SDK для реализации ваших идей, механизм restartless Вы можете осуществить самостоятельно. Технология Overlay extensions в целом устарела и не рекомендуется при разработке новых расширений.

Для получения дополнительной информации о том, какой способ использовать, прочтите это сравнение.

Рекомендуемые практики

Вне зависимости от того, каким способом Вы разрабатываете расширение, имеются общие рекомендации, следуя которым вы гарантируете пользователю максимально приятную работу с вашим расширением.

Производительность
Убедитесь в том, что Ваше расширение обладает хорошей производительностью. Оно должно быть достаточно быстрым, иметь отзывчивый интерфейс и потреблять минимальный объем памяти.
Безопасность
Убедитесь в том, что Ваше приложение не подвергает пользователя опасности на вредоносных веб сайтах.
Этикет
Убедитесь в том, что Ваше расширение не конфликтует с другими расширениями.

Специфика разработки для различных приложений

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

Thunderbird
Разработка расширений для почтового клиента Thunderbird.
Firefox для Андроид
Разработка расширений для Firefox под Андроид.
SeaMonkey
Разработка расширений для SeaMonkey.

Темы

Темы это дополнения, которые изменяют внешний вид пользовательского интерфейса.  Существуют два вида тем: легковесные темы и полные темы.

Легковесные темы значительно легче создать, чем полные, но их возможности ограничены.

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


Другие типы дополнений

Поисковые плагины являются простыми и очень специфическими типами дополнений: они добавляют новые поисковые системы для поиска в строке браузера.

Плагины (не путать с расширением и дополнением) помогают приложению понять содержание, которое не имеет встроенной поддержки. NPAPI-плагины являются устаревшей технологией и новые сайты не будут ее использовать. Как правило, такие плагины не доступны для использования на большинстве современных мобильных систем, и веб-сайты должны избегать их использования.


Присоединись к сообществу extension development

Выбери удобный способ для общения:

Смотрите также

  1. Restartless extensions
  2. Legacy extensions
  3. Дополнения на основе SDK
    1. Installation
    2. Tutorials
    3. Guides
    4. High-Level APIs
      1. Low-Level APIs
        1. Tools Reference
          1. jpm
          2. jpm-mobile
          3. jpmignore
          4. console
          5. cfx to jpm
          6. package.json
          7. The Add-on Debugger
        2. Release notes
      2. Techniques
        1. Promises
      3. Рекомендуемая практика
        1. Производительность
        2. Безопасность
        3. Этикет
      4. Темы
        1. Легковесные темы
        2. Легковесные темы FAQ
        3. Полные темы
      5. Legacy Plugins
        1. Plug-in Basics
        2. Plug-in Development Overview
        3. Initialization and Destruction
        4. Drawing and Event Handling
        5. Streams
        6. URLs
        7. Memory
        8. Version, UI, and Status Information
        9. Plug-in side Plug-in API
          1. NPP_Destroy
          2. NPP_DestroyStream
          3. NPP_GetValue
          4. NP_GetValue
          5. NPP_HandleEvent
          6. NP_Initialize
          7. NPP_New
          8. NPP_NewStream
          9. NPP_Print
          10. NPP_SetValue
          11. NPP_SetWindow
          12. NP_Shutdown
          13. NPP_StreamAsFile
          14. NPP_URLNotify
          15. NPP_Write
          16. NPP_WriteReady
        10. Browser Side Plug-in API
          1. NPN_DestroyStream
          2. NPN_ForceRedraw
          3. NPN_GetAuthenticationInfo
          4. NPN_GetURL
          5. NPN_GetURLNotify
          6. NPN_GetValue
          7. NPN_GetValueForURL
          8. NPN_InvalidateRect
          9. NPN_InvalidateRegion
          10. NPN_MemAlloc
          11. NPN_MemFlush
          12. NPN_MemFree
          13. NPN_NewStream
          14. NPN_PluginThreadAsyncCall
          15. NPN_PostURL
          16. NPN_PostURLNotify
          17. NPN_ReloadPlugins
          18. NPN_RequestRead
          19. NPN_SetValue
          20. NPN_SetValueForURL
          21. NPN_Status
          22. NPN_UserAgent
          23. NPN_Version
          24. NPN_Write
        11. Scripting plugins
          1. NPString
          2. NPVariant
          3. NPN_ReleaseVariantValue
          4. NPN_GetStringIdentifier
          5. NPN_GetStringIdentifiers
          6. NPN_GetIntIdentifier
          7. NPN_IdentifierIsString
          8. NPN_UTF8FromIdentifier
          9. NPN_IntFromIdentifier
          10. NPObject
          11. NPN_CreateObject
          12. NPN_RetainObject
          13. NPN_ReleaseObject
          14. NPN_Invoke
          15. NPN_InvokeDefault
          16. NPN_Evaluate
          17. NPN_GetProperty
          18. NPN_SetProperty
          19. NPN_RemoveProperty
          20. NPN_HasProperty
          21. NPN_HasMethod
          22. NPN_SetException
          23. NPClass
        12. Structures
        13. Constants
        14. External Resources
      6. Publishing add-ons
        1. Signing and distributing your add-on
        2. Submit a new add-on
        3. Policies
          1. Developer Agreement
          2. Review Process
          3. Add-on guidelines
          4. Featured Add-ons
          5. Contacting Us
      7. Community and Support
        1. Add-ons Blog
        2. Add-on Forums
        3. Stack Overflow
        4. Development Newsgroup
        5. IRC Channel