Немного предыстории.
Давным-давно, когда я делал свои первые шаги во фронтенде (вёрстка html-страниц и установка различных JQuery-плагинов), ко мне пришло понимание того, что многие задачи однотипны и необходимо создать свой набор инструментов и шаблонов с целью ускорить процесс веб-разработки. Как, наверное, многие начинающие, я пытался придумать свой "велосипед", но быстро понял, что это не тот путь (потому что кроме вёрстки, которой я овладел в достаточной степени, было ещё программирование на javascript, знания которого были нулевыми). Я начал искать готовые фреймворки и быстро натолкнулся на Bootstrap. Моему счастью не было предела. С тех пор и поныне я использую его в своей работе.
Теперь плавно подходим к вопросам. Всё чаще я слышу мнения разработчиков о том, что использование css-фреймворков - это моветон, что пора отказываться от JQuery в пользу нативного js, чему способствует как расширение возможностей самого языка, так и серьёзная работа разработчиков над браузерами, связанная с внедрением поддержки новомодных фич. Что касается javascript, тут я полностью солидарен.
Но почему все так ненавидят css-фреймворки?
Я собрал доводы за и доводы против. Вы также можете высказаться по этому поводу.
Доводы на примере BootstrapЗа:
1) позволяет быстро разрабатывать проекты, поскольку имеет набор готовых css-компонентов и JQuery-плагинов (экономия времени);
2) прост в освоении потому, что имеет прекрасную документацию (простота);
3) аккумулировал вокруг себя огромное сообщество, члены которого ежедневно публикуют сотни готовых решений, советов и ответов касательно данного фреймворка на тематических сайтах (популярность и огромная база знаний);
4) идеален как для прототипирования, так и для продуктов с длительным существованием и сопровождением (адаптивность, кроссбраузерность, модульность).
Против:
1) трудности при работе с методологией БЭМ (согласен, но мне больше импонирует подход Bootstrap к наименованию классов);
2) общие классы, засоряющие глобальное пространство имён (также согласен, хотя у меня ещё не было серьёзных проектов, где это было бы препятствием);
3) зависимость от JQuery (есть Bootstrap на нативном JS!);
4) не подходит для проектов с уникальным дизайном (легко кастомизируется с помощью переменных SASS);
5) лишние неиспользуемые стили (работая с исходными файлами (scss), можно подключить лишь то, что действительно необходимо);
6) проблемы с вынесением critical css;
7) используют фреймворки лишь те, кто не научился верстать сам (я много времени провёл над изучением теории css, много практиковался, поэтому не считаю это действительно сильным аргументом).
Если вы не используете фреймворки, то с помощью каких инструментов вы верстаете? Собственные наработки? Задействуете отдельные компоненты популярных фреймворков вкупе со своими? Широко используете возможности препроцессоров (набор своих миксинов)? Пишете свои js-плагины (напр., для того же выпадающего меню)?
UPDATE. Представьте ситуацию (а может такие ситуации у вас уже были), когда вас попросили создать сайт без использования фреймворков. Будете ли вы писать всё с нуля сами (ту же сетку на SASS, ту же навигацию или модальное окно) или найдёте отдельные готовые решения?