Англійська для розробників розширень браузера
Освоєння словникового запасу для обговорення манифестів, скриптів вмісту, прав доступу і процесу перегляду магазину додатків англійською мовою.
Розробка розширення браузера має свій власний словник, сформований моделлю безпеки браузера і процесами перегляду магазинів розширення, обидва з яких постійно з’являються в інженерних дискусіях і в письмовому спілкуванні з рецензентами магазинів. Точність особливо важлива у запитах на надання дозволів і описах списків магазинів, де нечітка мова може призвести до відхилення або тривалої затримки перегляду.
Ключовий словник
Маніфест
Файл налаштувань ( manifest.json ), який декларує метадані розширення, права доступу і скрипти, які воно виконує — переглядач читає цей файл, щоб зрозуміти, що дозволяється робити розширенню.
- Приклад: « Нам потрібно додати дозвіл
activeTabдо манифесту, щоб ця функція працювала, оскільки на даний момент у нас немає доступу до поточної сторінки. » *
** Скрипт вмісту ** JavaScript, який розширення вставляє безпосередньо у веб- сторінки, надаючи змогу читати або змінювати DOM сторінки, але виконуючи його у контексті, ізольованому від власних скриптів сторінки. Приклад: “Скрипт контенту може читати DOM сторінки, але він не може безпосередньо викликати функції, визначені в JavaScript сторінки — для цього нам потрібно використовувати передачу повідомлень.”
** Фоновий скрипт / службовий працівник ** Скрипт, який виконується незалежно від будь- якої окремої веб- сторінки, обробляє події, підтримує стан і координує дії скриптів вмісту з іншими частинами розширення.
- Приклад: « Ми пересунули цю логіку до фонової служби, оскільки вона повинна зберігатися навіть після того, як користувач закрив вкладку, у якій виконувався скрипт з вмістом. » *
Изолированный мир
Відокремлений контекст виконання JavaScript, у якому виконуються скрипти вмісту, що запобігає безпосередньому доступу до змінних і функцій, визначених сценаріями веб- сторінки, і навпаки.
Приклад: “Ви не можете просто викликати функцію сторінки безпосередньо зі скрипту контенту — вони працюють в ізольованих світах, тому вам потрібно буде ввести скрипт у власний контекст сторінки або використовувати postMessage.”
** Дозвіл (дозвіл на розширення) **
Особлива можливість, яку додаток вимагає від користувача, наприклад, читання історії перегляду або доступ до всіх веб- сайтів, яку буде показано під час встановлення або за допомогою підказок під час виконання.
Приклад: «Ми запитуємо широкий дозвіл <all_urls>, але функція насправді потребує доступу тільки до двох конкретних доменів — суження, яке зробить перегляд магазину швидшим і заспокоїть користувачів.»
** Передача повідомлення ** Механізм, за допомогою якого різні частини розширення (скрипти вмісту, скрипти тла, контекстні вікна) спілкуються між собою, оскільки вони виконуються у окремих, ізольованих контекстах.
- Приклад: « Вигулькне вікно надсилає повідомлення скрипту у фоні з запитом на збережений стан поточної вкладки, замість спроби отримати до нього безпосередній доступ. » *
Огляд магазину Процес, за допомогою якого магазин додатків виробника переглядача (веб- магазин Chrome, додатки Firefox тощо) оцінює надіслані додатки на предмет відповідності правилам перед їх публікацією.
- Приклад: « Наш останній запит був помічений у перегляді магазину, оскільки в поясненні дозволів не було чітко пояснено, чому нам потрібен доступ до всіх веб- сайтів. » *
Маніфест V3 Поточне покоління специфікації манифеста розширення, яке вводить значні обмеження (наприклад, заміну постійних фонових сторінок на service workers), головним чином з міркувань безпеки і швидкодії.
- Приклад: « Перехід на Manifest V3 порушив наш довго запущений таймер фону, оскільки переглядач може припинити роботу службових процесів, коли вони не виконуються. » *
Звичайні фрази
** В обзорах коду: **
- «Цей скрипт контенту вимагає набагато більше доступу до DOM, ніж функція насправді потребує — давайте розширимо шаблон збігів тільки на сторінки, на яких він повинен працювати»
- «Ми не займаємося випадком, коли фоновий службовий працівник припиняється в середині завдання — нам потрібно зберегти стан до того, як це станеться, а не припускати, що він залишається живим»
- «Це повідомлення не перевіряє відправника, тому будь-яке інше розширення або зловмисний скрипт сторінки може потенційно викликати його.»
В стоячих позах:
- «Вчора я мігрував фонову сторінку до Manifest V3 service worker; сьогодні я виправляю помилку, де стан не зберігається при перезапуску worker»
- «Я заблокований на перегляді магазину — вони відхиили нашу останню заявку через неясне обґрунтування дозволу, тому я переписую цю частину нашого списку»
- «Я закінчив сужувати наші хост-дозволи з усіх веб-сайтів до трьох доменів, які ця функція насправді потребує»
** У письмовій формі зберігати описи передачі або пояснення дозволів: **
- «Це розширення вимагає доступу до вашої історії перегляду лише для виявлення і попередження вас про раніше відвіданих фішингових доменах; ніякі дані перегляду не передаються з вашого пристрою.»
- «Ми запитуємо
storageдозвіл для збереження ваших настроїв локально, іactiveTabдозвіл для читання вмісту поточної сторінки тільки тоді, коли ви явно натискаєте на іконку розширення» - «Жодна інформація, зібрана цим розширенням, не продається третім особам або не використовується в інших цілях, крім описаної вище основної функціональності»
Фрази, яких слід уникати
** Сказати « надати всі права » під час розробки, щоб заощадити час. ** Це створює реальний ризик того, що занадто широкий запит перетвориться на виробниче подачу. Замість цього скажіть: « давайте запитаємо тільки мінімальні права доступу, які потрібні цій можливості, і розширимо їх пізніше, якщо певна можливість потребує цього » — переглядачі магазину і користувачі уважно перевіряють обсяг прав доступу.
**Скажи “розширення пошкоджено” для проблеми з циклом життя сервісного працівника. ** Замість цього скажіть: « Фонова служба була припинена і втратила свій стан у пам’ яті » — це специфічна, добре відома поведінка Manifest V3, а не таємничий зрив, і назва точно вказує безпосередньо на виправлення (стійкий стан замість того, щоб покладатися на те, що він залишається в пам’ яті).
**Сказати “це доступ до сторінки” нечітко в обґрунтуванні дозволу. ** Рецензенти магазинів очікують специфічності. Замість цього скажіть: « it reads the page’ s visible text to detect [specific pattern] » — нечітке пояснення дозволів є однією з найпоширеніших причин відхилення перегляду.
Краткий справочник
| Term | How to use it |
|---|---|
| manifest | ”Add the new permission to the manifest before this feature works.” |
| content script | ”The content script reads the page DOM in an isolated world.” |
| service worker | ”State needs to persist since the service worker can be terminated.” |
| message passing | ”The popup uses message passing to request data from the background.” |
| permission | ”We narrowed the permission scope to just the domains we need.” |
| store review | ”Store review rejected us over a vague permission justification.” |
Ключеві моменти
- Обсяг запитів на дозволи точно відповідає тому, що потрібно функції — як переглядачі магазину, так і користувачі, які піклуються про конфіденційність, уважно перевіряють широкі запити.
- Розуміння ізольованих світів і передачі повідомлень точно; більшість помилок у передачі зображення зі скрипту на сторінку пов’ язано з нерозумінням цього пункту.
- Описати завершення роботи служби Manifest V3 конкретно, замість того, щоб називати втрату стану таємничим « аварійним завершенням » — це очікувана, документована поведінка, навколо якої можна розробляти.
- Написати виправдання дозволів з конкретною специфікою (« читає видимий текст для виявлення X »), оскільки нечітка мова є головною причиною відхилення перегляду магазину.
- Зберігати скорочення дозволів під час розробки (наприклад, запитувати все) явно тимчасовими, і сужати їх до мінімуму перед будь- яким справжнім надсиланням.
Націоналізація та приватизація: практичні питання
Погляньмо правді в очі: ефективне спілкування як розробник розширення браузера - це більше, ніж просто написання коду. Це розуміння нюансів запитів на зміни, надання зворотнього зв’язку і, загалом, участі в колективному середовищі. Нерідні носії часто вважають це особливо складним, не тільки через граматичні складності, але і через специфічну термінологію, яку використовують в дискусіях з розвитку. Простий запит на зразок « виправити це » може бути неправильно інтерпретовано; докладніше пояснення завжди буде цінним.
Розглянемо цей сценарій: Сара надіслала PR для свого нового розширення блокування реклами. Марк, старший розробник команди, залишає коментар до її запитів на збір: «Чи можете ви пояснити, чому ви запитали дозвіл на доступ до всіх даних користувача? Це здається надмірним і викликає певні побоювання щодо приватності. “Тепер Сара, яка все ще розвиває свої вміння англійської мови, може відчувати себе в обороні або не впевнена, як адекватно відповісти. Поспішний, погано сформулований відповідь може погіршити ситуацію. Замість цього їй потрібно сформулювати * чому * вона вважає, що цей дозвіл необхідний - можливо, це для певної функції, яка дійсно вимагає доступу до даних, і вона може це чітко пояснити. Аналогічно, отримання зворотнього зв’язку на ваш власний код під час перегляду не завжди є простим. Фрази на кшталт «Це можна поліпшити» або «Розглянути рефакторинг» є неймовірно нечіткими без контексту. Розробник може сказати: «Я ціную пропозицію щодо функції injectScript. Чи можете ви розібратися, які конкретні проблеми з продуктивністю ви спостерігали?» Це демонструє активне залучення до зворотнього зв’ язку і бажання зрозуміти обґрунтування, що стоїть за ним.
Крім того, навіть прості повідомлення Slack вимагають ретельної формулювання. Уявіть собі, що вам потрібно звернутися за допомогою до іншого члена команди: « Чи може хтось переглянути це?» — це набагато менш ефективно, ніж « Я зіткнувся з проблемою з введенням скрипту з вмістом; я долучив відповідні журнали і був би вдячний за вашу допомогу у зневадженні ». Чим точніше ви будете описувати ситуацію, тим більше шансів отримати конкретну допомогу, яка вам потрібна. Сфокусування на ясній, короткій мові - уникаючи жаргону, коли це можливо - значно покращить комунікацію в команді розробників.
Ось приклад, який показує, як використовувати webpack (зазвичай використовується інструмент збирання), щоб проілюструвати цю позицію:
webpack --mode=development content/script.js -o bundle.js
Ця команда збирає ваші файли JavaScript для розширення, і розуміння використовуваних прапорців — наприклад, --mode=development або -o bundle.js — є ключовим під час обговорення проблем під час перегляду коду. Якщо ви поясните це комусь, хто не знайомий з інструментами розробки, ви можете сказати: «Я використовую webpack для компіляції моїх файлів JavaScript; конкретно, я встановлюю режим збирання на ‘розробку’, який дозволяє корисні функції зневадження, і виводить скомпільований код у файл під назвою bundle.js. »