Англійська для розробників Wasp Framework
Словник для розробників, які будують повноцінні програми зі стеком з Wasp — декларативні конфігурації DSL, об’ єкти, дії, запити і аутентифікація — для команд, які обговорюють повноцінне створення стеків англійською мовою.
Wasp — це повний фреймворк, який використовує декларативну мову конфігурації (main.wasp ) для підключення до фронтенду React, бекенду Node.js і бази даних Prisma з набагато меншою кількістю деталей, ніж зібрання частин самостійно. Його словник поєднує знайомі повні терміни стека — «суб’єкти», «запити», «дії» — з власними концепціями DSL. Якщо ваша команда оцінює або створює з Wasp, ось англійська мова, яка вам знадобиться для обговорення дизайну і перегляду коду.
Мова конфігурації
** файл main.wasp** — центральний декларативний файл, у якому ви визначаєте сторінки, маршрути, об’ єкти і операції; Wasp створює код клейового зразка з цього файла.
“Перед тим, як торкатися будь-якого коду React, перевірте файл main.wasp — маршрут і розташування сторінок декларуються там, а не розкидані по кодовій базі.”
** Декларативне налаштування ** — опис * того, що * потрібно вашій програмі (маршрут, сторінка з захистом від автентифікації), замість написання * того, як * вручну. “Додати новий автентифікований маршрут можна за допомогою одного рядка у налаштуваннях — Wasp створює логіку захисту за нас, замість того, щоб ми писали її вручну.”
** Генерування коду ** — Wasp читає конфігурацію і автоматично генерує підтримку налаштування маршрутизатора React, маршрутів Express і підключення клієнтів Prisma. “Не редагуйте створені файли вручну — вони відновлюються при кожній збірці, отже будь- які зміни, внесені вручну, просто будуть перезаписані.”
Дані та операції
Entity
** Сутність ** — це концепція Wasp, яка безпосередньо відповідає моделі Prisma — основні типи даних, які зберігаються у вашій програмі.
“Ми додали
Commentсутність до схеми, і Wasp автоматично створив таблицю Prisma для неї — немає окремого файлу міграції, який треба писати вручну.”
Query
** запит ** у Wasp є операцією читання — типованою функцією, яку ви визначили у сервері і яку інтерфейс викликає за допомогою автоматично створеного, безпечного для типів гачка.
“Запит
getTasksповністю типізований від початку до кінця — якщо я додам поле в backend, TypeScript негайно позначає кожне місце на frontend, яке потребує оновлення.”
Action
** Action ** — це операція запису, аналогічна запиту, яку використовують для будь- чого, що змінює дані (створення, оновлення, вилучення).
“Ми навмисно розділилися дію
updateTaskвід запитуgetTasks— Wasp автоматично анульовує і знову отримує правильні запити після виконання дії.”
Автоматичне скасування кешу
Запити Wasp автоматично ** анульуються і отримуються знову **, коли виконується пов’ язана дія, тому інтерфейс залишається синхронним без вручну викликати refetch() скрізь.
“Ми не писали жодного виклику кеш-інвалідації вручну — Wasp знає, що дія
updateTaskвпливає на запитgetTasksі оновлює його автоматично.”
Історія та сторінки
** Повний стек автентифікації ** — Wasp забезпечує вбудовану підтримку потоків для ім’ я користувача/ пароль, соціальний входу, і електронної пошти, створених з декількох рядків налаштування, а не окремої інтеграції бібліотеки автентифікації.
“Налаштування Google login зайняло, можливо, десять хвилин — поток аутентифікації, обробка сеансів і захищені маршрути обробляються вбудованим аутентифікатором Wasp.”
** Захищена сторінка ** — сторінка, яку у налаштуваннях оголошено як сторінку, що вимагає розпізнавання; Wasp автоматично створює логіку переспрямування для відвідувачів, які не пройшли розпізнавання.
“Позначити сторінку панелі як
authRequired: trueбуло достатньо — анонімних відвідувачів перенаправляють на входи без написання цього перевірки вручну.”
** Завдання ** — концепція Wasp для виконання фонових або запланованих завдань (наприклад, надсилання резюме електронної пошти), які налаштовуються декларативно і виконуються поза циклом запит/ відповідь.
- “Щоденна коротка ел. пошта визначена як заплановане завдання у налаштуваннях — її запуск відбувається незалежно від будь- якого запиту користувача.” *
Розгортання і витягування
Викидання — (рідкісний, останній засіб) процес виходу за межі сформованого Wasp скелета, щоб написати від руки частини програми, коли абстракції фрейму не підходять для певної потреби.
- “Нам ще не довелося нічого викидати — вбудовані операції дотепер охоплюють кожен випадок використання, що багато говорить про те, наскільки добре обмежена абстракція.” *
** Розгортання повного стека ** — Wasp може розгортати інтерфейс, сервер і базу даних разом за допомогою однієї команди, замість координації трьох окремих конвеєрів розгортання.
”
wasp deployобробляв підготовку бази даних і розгортання як клієнта, так і сервера — це найшвидша настройка від нуля до виробництва, яку я використовував для бокового проекту.”
Використовує клавішу Enter для команди
| Situation | Phrase |
|---|---|
| Justifying the framework choice | ”For an MVP with a standard CRUD shape, Wasp gets us a typed, full-stack app with auth working in days instead of weeks.” |
| Explaining generated code | ”Don’t edit the generated Prisma client directly — change the entity in main.wasp and let Wasp regenerate it.” |
| Describing the query/action split | ”Queries are for reads, actions are for writes — and Wasp automatically refetches the right queries after a related action runs.” |
| Discussing framework limits | ”If we outgrow the built-in operations for a specific complex flow, we can eject that piece without rewriting the whole app.” |
Поширені помилки
- Назвавши кожну функцію сервера «запитом» — у словнику Wasp, читання є запитами, а запис є діями, і змішуючи їх, ви плутаєте автоматичне анульування кешу.
- Використання фрази « Я змінив створений файл », ніби це звичайний процес роботи — створені файли призначено для відтворення, а не для вручну створеного обслуговування.
- Описуючи Wasp як «просто бібліотеку інтерфейсу користувача» — вона налаштовує фронтенд, бекенд і базу даних разом, що є іншим обсягом, ніж компонентна бібліотека.
Практичні вправи
- Поясніть двома реченнями різницю між запитом Wasp і дією Wasp для тих, хто не має досвіду роботи з цією платформою.
- Написати короткий опис PR для додавання нової сутності і відповідного запиту і дії.
- Сформулювати повідомлення, в якому пояснюється, чому команда обрала Wasp для конкретного MVP, зосереджуючись на часі до першого розгортання.
Зв’язані ресурси
- Англійська для ремікс-розробників
- Англійська для розробників tRPC
- Англійська для розробників Supabase
Національний гідрографічний інститут: Відповідь і відповіді
Для не-рідних англомовних, навіть здавалося б прості технічні обговорення можуть відчувати себе наповнені потенційним непорозумінням. Ключ не тільки в тому, щоб знати самі слова - це розуміння * як * ці слова використовуються в професійному контексті, особливо при обговоренні коду і потоків розробки. Проста «вадка» або «виправлення» може мати дуже різні наслідки залежно від тону і навколишнього фразування. Розгляньте різницю між словами «Це потрібно виправити» і «Чи можете ви дослідити цю проблему і запропонувати рішення?» Останнє демонструє повагу до часу і досвіду вашого колеги, обґрунтовуючи завдання як спільне вирішення проблеми, а не просто приписуючи звинувачення.
Однією з критичних областей є розуміння зворотнього зв’язку, що надається через перегляд коду. Коментарі типу “Це можна було б поліпшити” є неймовірно нечіткими. Більш продуктивним підходом буде: « Я помітив, що цей запит не використовує індекс; додавання індексу значно покращить продуктивність ». Аналогічно, при описі змін у Запиті на завантаження, уникайте надто технічного жаргону, якщо переглядач не є близьким до конкретних деталей реалізації. Замість того, щоб вказати « Перероблено сутність користувача, щоб вона відповідала принципам DRY », спробуйте « Ця зміна спрощує код і зменшує кількість дублікатів, полегшує підтримку і, можливо, розширює його функціональність ». Пам’ ятайте, що чіткість і стислість є найважливішими — намагайтеся вказати опис, який дозволить кожному з членів команди зрозуміти, * чому * відбулися зміни. Нарешті, не бійтеся просити про пояснення, якщо щось не ясно; швидке «Чи можете ви розібратися, що ви маєте на увазі під «це відчувається неефективним»?» часто може швидко розв’язати плутанину.
Ефективне спілкування також поширюється на асинхронні інструменти співпраці, такі як Slack. Поспішне повідомлення на зразок « Виправлено! » не має контексту і може призвести до непотрібних подальших питань. Краще було б вказати « Виправлено проблему з розпізнаванням користувача; реалізовано двофакторну автентифікацію згідно з запитом ». У цьому повідомленні буде наведено важливу інформацію про характер виправлення і продемонстровано дотримання певних вимог. Аналогічно, коли ви просите допомоги, чітко сформулюйте проблему, з якою ви стикаєтеся: «Я стикаюся з помилкою під час дії create на сутності Продукт - я підозрюю, що це може бути пов’язано з перевіркою даних. Будь-які пропозиції?»
Ось простий приклад, який показує, як використовувати команду wasp query у Wasp для оптимізації запиту:
wasp query --optimize my_query.ws
Після виконання цієї команди буде проаналізовано і, можливо, переписано ваш запит ( my_query.ws ) для того, щоб він був ефективнішим, показуючи практичне застосування словника, пов’ язаного з швидкодією, який часто обговорюється під час перегляду коду і обговорення архітектури.