documentation
documentation copied to clipboard
docs(guides): add electron tech guide
Background
Добавлен подход по использованию FSD с Electron.
UPD
Если есть какие-либо рекомендации или замечания, буду рад выслушать
@illright, привет, благодарю за обратную связь, обновил гайд с учётом твоих замечаний.
- На практике нужен какой-то слой, объединяющий несколько
featuresвmainпроцессе, можно его назватьwidgets, чтобы не было расхождений со стандартом FSD; - Спасибо за совет, в процессе разработки на Electron в голову такая идея самому не приходила;
- Здесь согласен полностью.
Думаю лучше будет реализовать пример отдельно в репозитории и добавить его в список примеров в документации
Спасибо за пример, так намного понятнее. Я согласен, хорошо бы накидать какой-то пример проекта, который прямо можно потыкать. Может быть, ты мог бы добавить примерчик в https://github.com/feature-sliced/examples, а потом мы его прилинковали бы на этой странице?
Название widgets, кажется, не очень подходит для main процесса, widgets как бы намекает на какие-то блоки интерфейса, нежели группы фич. А в каких сценариях может понадобиться объединение фич?
Еще хотелось бы привести пример чуть больше в соответствие FSD 2.1 — например, не создавать виджет, который используется только на одной странице. Может быть, это также решит и проблему объединения фич в процессе main?
Привет ещё раз, прошу прощения за задержку с обновлением. Объединение нескольких фич может понадобиться в сценариях, когда мы имеем какую-то многосоставную логику с вызовом системных команд и специфической работой с файловой системой. В качестве примера, на текущем проекте, фичей выступает запись/удаление данных в Credential Manager ОС Windows, фича дальше используется в нескольких слайсах вышестоящего слоя
@illright, привет ещё раз, понимаю, что свободного времени у тебя немного, но решил напомнить о себе :)
Привет, извини, как-то вылетело из головы. Спасибо, что напоминаешь. Посмотрел последние изменения, вот что я думаю:
-
Хотелось бы разделить добавление новой страницы доки и добавление нового примера в секцию примеров на разные ПРы. Я, собственно, недавно принял решение больше не добавлять примеров в ту секцию, куда ты добавил свое приложение, из-за множественных проблем с этой секцией. Мог бы ты, пожалуйста, вместо добавления примера туда добавить его в репозиторий https://github.com/feature-sliced/examples?
-
В контексте FSD 2.1 создание новых слоев пока что не рекомендуется, хоть и есть идеи пересмотреть это ограничение в следующих версиях. Поэтому мне кажется немного сомнительной идея рекомендовать создание слоя Services в main процессе. Мне больше нравилась идея со слоями Features и Entities в
src/main. Кстати, насчет этого… -
…в твоем комментарии выше ты приводишь пример фичи "запись/удаление данных в Credential Manager". Для меня это звучит больше как инфраструктурный сервис, т.е. что-то техническое, что-то, что, условно, стейкхолдерам бизнеса знать не обязательно. Слой Features предназначается не для таких сервисов, а для бизнесовых фич, т.е. тех элементов функционала, которые обсуждаются между стейкхолдерами и разработчиками, например "импорт MS Word-документов". С такой точки зрения эти фичи уже, на мой взгляд, не требуют композиции на слое выше, потому что они сами собой представляют ценную для бизнеса единицу. Инфраструктурные сервисы, как например, сохранение кредов, на мой взгляд лучше ложатся в shared c независимым от реализации интерфейсом, чтоб в процессе разработки была возможность абстрагироваться от деталей ОС и рассматривать хранилище кредов как абстрактный секьюрный стор
-
Хотелось бы добавить папки features и entities в это файловое дерево в начале гайда, в качестве просто нераскрытых папок. Иначе создается впечатление, что создание этих слоев не рекомендуется в этих местах
@illright, привет, внёс соответствующие правки. Не знаю, нужно ли было добавлять в файловое древо все стандартные слои, но по итогу добавил :D
Спасибо! Если будет желание добавить перевод на английский (можно через переводчик, если что, подредактируем вместе), буду очень признателен :)
Принято, перевод сделаю)