Вы работаете на фронтенде небольшой интернет-компании. В последнее время компания хорошо развивается и имеет стабильную бизнес-модель. Начальник решил попробовать платное продвижение.
Скоро Первомай, и босс хочет спланировать мероприятие, чтобы сыграть. Однако штат сотрудников компании ограничен, и каждый бизнес не может развиваться независимо.
Итак, босс нашел вас, я надеюсь, вы упаковали событие.SDK
Компоненты для нескольких бизнес-доступа компании.
Вы пробормотали в душе: "Я обычно пишу много компонентов, и еще я писал публичные компоненты. Активный компонент ощущается как публичный компонент с бизнес-логикой. Это не должно быть сложно, правда?"
Но ты не имеешь ни малейшего понятия в своем сердце, ты боишься компонентов, которые инкапсулируешьSDK
Если связанной деловой стороне это не нравится, они попросят самую старшую (наименее выданную) интерфейсную старую карту компании.
Быть объясненным, старая карта глубоко кричала хризантема 枸 чай в изоляционной чашке.
"Этот компонент пакетаSDK
Дверной проем разделен на компонентный дизайн, разработку, доступ и онлайн, пожалуйста, приходите ко мне по одному».
дизайн компонентов
Хороший дизайн компонента требуетЧеткие обязанности. На этапе проектирования необходимо четко определить обязанности с тремя ролями:
Четкие обязанности с сервером, предоставляющим данные
Данные, необходимые внутри действия, обычно предоставляются сервером, и в настоящее время необходимо уточнить степень детализации поля.
Например: пригласите новых пользователей, чтобы получить вознаграждение в размере xxx юаней.
xxx
переменная, обычно как поле.
ТакПриглашайте новых пользователей, чтобы получить вознаграждениеЧто с этим текстом? Во время мероприятия можноPM
Я обнаружил, что этот текст не работает, и хотел изменить его.
Если внешний интерфейс жестко закодирован, его изменение означает, что и поставщик компонентов (вы), и сторона, предоставляющая доступ к бизнесу, должны будут снова подключиться к сети.
Итак, если оценка, вероятно, будет пересмотрена, лучшим способом может быть распространение этой копии в аналогичной структуре:
data: {
title: "邀请新用户得{{bonus}}元奖励",
params: {
bonus: 123
}
}
Уточнение обязанностей со сторонами доступа к бизнесу
для мероприятияSDK
Пакет легкий,SDK
Возможности для внутреннего использования (например, запросы данных, регистрация, мониторинг ошибок) обычно предоставляются средой хостинга (бизнесом компонента доступа).
Эти возможности делятся на две категории:
-
Методы, предоставляемые деловой стороной во время выполнения
-
Возможности, предоставляемые библиотеками, на которые полагаются бизнес-стороны
вметод выполненияможно использовать какprops
перейти кSDK
Компоненты, такие как метод входа.
возможности библиотеки,SDK
Его необходимо определить какpeerDependencies
,НапримерReact
,ReactDOM
.
React
Необходимо определить стек технологийSDK
в использованииReact
Версия и бизнесReact
версия должна быть одновременноv16.14
до или после, в случаеJSX
компилируется в другой результат (_jsx.createElement
а такжеReact.createElement
)
а такжеPM
Завершите процесс активности
Этот шаг и друзья, порвавшие изделие, знают об этом.
разработка компонента
Завершите разделение обязанностей, подготовьте техническую документацию, а затем начнитеразработка компонента.
На этом этапе следует отметить две вещи:
Подсказка идеального типа
использоватьts
Написание компонентов и экспорт файлов объявлений типов могут значительно стандартизировать доступ бизнес-партнеров и снизить стоимость связи доступа.
граница ошибки
еслиSDK
Компонент выдает ошибку, вызывая сбой доступной страницы, правильноp0
сортbug
.
Итак, обязательноSDK
ошибкаcatch
внутри компонента.
дляReact
компоненты, сErrorBoundary
Обертывание необходимо.
доступ к бизнесу
SDK
Компонент окончательно разработан и выпущен в компаниюnpm
Платформа.
Деловая вечеринка будетSDK
кnpm
Представлен в виде пакета.
На этом этапе необходимо рассмотреть следующие вопросы:
Какая спецификация модуля используется стороной доступа к службе для импорта (ESM
ещеCJS
)?
Если сторона доступаSSR
В виде компонентов доступа на стороне сервера возможно использованиеCJS
Технические характеристики.
CSR
обычно используется вESM
.
такSDK
Компоненты должны выводиться при упаковке и компиляцииESM
,CJS
Два конкретных файла.
Если сESM
Экспорт, необходимо учитывать деловую сторонуtreeShaking
потребности
еслиSDK
Будет экспортировано несколько компонентов (например, один и тот же активный компонент выводит разные версии для разных бизнесов):
// index.tsx
export { default as Base } from './components/Base';
export { default as SDKForA } from './components/SDKForA';
export { default as SDKForB } from './components/SDKForB';
export { default as SDKForC } from './components/SDKForC';
необходимо учитывать деловую сторонуtreeShaking
нужно.
Текущий распространенный метод в отрасли заключается в компиляции различных компонентов в разные каталоги, а бизнес-сторона обращается к каталогу компонентов, например:
// 业务方代码
import SDKForA from 'SDK/dist/modern/components/SDKForA';
вSDK
Экспортировано для активного компонентаnpm
Мешок.
dist
Каталог для упаковки скомпилированного продукта.
modern
дляESM
Канонический путь упаковки, если вы хотите импортироватьCJS
пакет, который может бытьmodern
изменить наnode
.
SDKForA
Для компонентов, которые будут представлены.
Если деловая сторона используетbabel-plugin-import
, вышеизложенное можно заменить следующим:
// 业务方代码
import { SDKForA } from 'SDK';
Кромеjs
Помимо документов, но также учитывать деловую сторонуcss
Требуется компиляция файла.
Поэтому файл стиля компонента лучше всего отделить от компонента, например, по следующему пути:
- components
- SDKForA
- index.tsx
- style.less
вindex.tsx
введен вstyle.less
изменить на:
- components
- SDKForA
- index.tsx
- styles
- SDKForA
- style.less
- style.css
index.tsx
стиль вывода.css
а также.less
Два формата, когда деловая сторона должна дополнительно компилировать стиль, его можно ввести.less
, в противном случае напрямую импортировать.css
.
Когда бизнес-сторона получает доступ, она может получить доступ следующим образом:
// 业务方代码
import SDKForA from 'SDK/dist/modern/components/SDKForA';
import 'SDK/dist/modern/styles/SDKForA/style.less';
онлайн
После освобождения он на передовой? НЕТ!
В сети происходят интересные вещи
По мере увеличения числа пользователей различныеbug
Вероятность также увеличилась, в основном в том числе:
-
Исключение интерфейса
-
Не удалось загрузить статический ресурс
-
Ошибки, вызванные различными странными хост-средами
-
Исключения для критических активных процессов
Это требует онлайн-мониторинга и раннего предупреждения.
Если деловая сторона представляетsentry
,ДеятельностьSDK
может быть вышеcase
Встроить точки и установить соответствующие платы мониторинга.
Когда индикатор ошибки превышает пороговое значение, вы можете в любой момент встать с кровати, чтобы устранить проблему.
В дополнение к точкам захоронения кода, точки захоронения бизнеса также очень важны. Неизвестный интернет-человек сказал:
Я знаю, что мои действия будут выщипаны, но я не знаю, сколько шерсти выдернуто
Точка захоронения бизнеса даст вам знать.
Суммировать
Чтобы инкапсулировать не жаловаться наSDK
компонент, необходимо сделать следующее:
-
Уточнить обязанности компонентов и знать
SDK
Какие возможности могут быть получены в хост-среде -
идеально
ts
Декларация и границы ошибок -
Гибкие экспортные продукты, чтобы бизнес мог легко получить доступ
-
Мониторинг бизнеса и кода после выхода в интернет
Сказав это, Лао Ка сделал еще один глоток чая из хризантемы и годжи из термоса, только чтобы узнать:
Чай уже остыл.