какие паттерны применяются чаще всего на практике и где
Сразу отмечу, что все это чисто мое имхо, которое может не совпадать с мнением окружающих. В контексте фронтенда обычно все довольно просто. По моим наблюдениям в среднем сайте могут иметь смысл:
- Модули (делим код на независимые части)
- Фабрики (для компонентов интерфейса)
- Синглтоны (для хранилищ, точек сбора полифиллов / утилит и.т.д.)
- Адаптеры (для зависимостей и полифилов, которые могут измениться / выпилиться)
- Наблюдатели (для сбора происходящих событий в одном месте)
- Хранители (для сохранения действий пользователя и "Ctrl-Z")
- Стратегии (если действуем в зависимости от прилетевших данных)
Другим паттернам применение вижу редко, только если под какую-то замороченную бизнес-логику.
Хотя кого я обманываю, на среднем сайте обычно происходит только один паттерн - доширак из костылей. Ну и стоит сказать, что SPA-фреймворки имеют свойство навязывать свои подходы к решению задач, но это отдельная тема.
Важно понимать, что
паттерны проектирования - это просто хорошие идеи по поводу того, как организовать большой объем кода в той или иной ситуации. Это не "изучи тайное знание, запомни, и делай так всегда", не "используй паттерны, потому что великие их используют", это скорее "если не уверен как организовать код, возьми готовую идею, она вроде работает". Если вы будете просто решать задачи, то через N лет практики вы сами их все "изобретете", только не будете знать, что у них есть названия. Эффективно будет организовать себе заметку о том, какие из этих идей для чего примерно применяют, а потом, в процессе работы, в нее подглядывать, если встал вопрос "как организовать этот код".