Что такое нативный компонентный подход

Ответ

Нативный компонентный подход — это создание UI-компонентов с использованием чистого JavaScript, HTML и CSS без фреймворков (React, Vue и т.д.). Компоненты строятся как самостоятельные, переиспользуемые блоки с инкапсулированной логикой и стилями.

Пример нативного компонента (кнопка):

<button class="custom-button">Click me</button>

<style>
.custom-button {
  padding: 10px 20px;
  background: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
</style>

<script>
document.querySelector('.custom-button').addEventListener('click', () => {
  alert('Button clicked!');
});
</script>

Плюсы:

  • Полный контроль над реализацией
  • Нет оверхеда от фреймворков
  • Понятная DOM-структура

Минусы:

  • Нет реактивности "из коробки"
  • Больше ручной работы с DOM
  • Сложнее масштабировать

Используется в legacy-проектах, микроприложениях или когда важна минимальная зависимость.

Ответ 18+ 🔞

Да ты посмотри, что за дичь творят эти фроненды! Сидят, блядь, на своих фреймворках, как мартышлюшки на лианах, и уже забыли, как выглядит чистый HTML! А ведь есть, сука, нативный компонентный подход! Это когда ты, как настоящий шаман, лепишь UI-компоненты из голого JavaScript, HTML и CSS. Без этих ваших React, Vue и прочей ёбаной магии, которая потом в бандл гигабайтный превращается!

Вот смотри, как это выглядит, элементарно же, блядь:

<button class="custom-button">Click me</button>

<style>
.custom-button {
  padding: 10px 20px;
  background: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
</style>

<script>
document.querySelector('.custom-button').addEventListener('click', () => {
  alert('Button clicked!');
});
</script>

Видишь? Никаких хуёвых теней, никаких виртуальных DOM-ов, которые сами не знают, куда рендерятся. Всё на виду, как на ладони, в рот меня чих-пых!

И плюсы, конечно, овердохуищные:

  • Полный контроль. Ты — царь, бог и воинский начальник в своём коде. Хочешь — так, хочешь — эдак. Никакой фреймворк тебе не скажет: "а вот тут, мудила, у нас ограничение".
  • Нет оверхеда. Никаких лишних килобайт, которые тащат за собой эти ваши node_modules, весящие, как чугунный мост. Только то, что ты написал своими кривыми ручками.
  • Понятная структура. Открыл DevTools — и сразу видно, где что лежит, а не гадай, в каком из тридцати div'ов с хуёвыми классами спряталась твоя кнопка.

Но, ёпта, и минусы есть, куда ж без них:

  • Реактивности ноль. Хочешь, чтобы данные сами обновлялись? А хуй там! Всё руками, блядь, как в каменном веке. Написал innerHTML — и молодец, сиди теперь отслеживай каждое изменение.
  • Ручная работа с DOM. Приготовься писать тонны кода для простейших операций. Добавил элемент? Не забудь его потом и удалить, а то память потечёт, как сито.
  • Масштабирование — пиздец. Когда проект разрастётся, этот зоопарк из скриптов и стилей превратится в такую свалку, что сам чёрт ногу сломит. Поддерживать это — терпения ебать ноль.

Где это ещё живо? Да в legacy-проектах, которые как динозавры, блядь, до сих пор ходят. Или в микроприложениях, где каждый килобайт на счету. Или когда у тебя начальник — конченый скряга и говорит: "Зачем нам фреймворк? И так сойдёт!".

В общем, инструмент как инструмент. Иногда — самое то, а иногда — хуй в пальто. Смотря что строить собрался.