Pull to refresh

Comments 23

По мне так лучше решать эту проблему организационно, просто распределив элементы для стилизации или создав список имен заранее. Если все же напутали, то git вам в помощь. Сравниваем файлы и если есть конфликты в названии, то решаем какой оставляем.

"Глобальные переменные - плохо", тут мало кто спорит. Глобальные имена классов из css - почему-то часто.

Представил бы я современный проект, где заранее создан список имён переменных и используется гит для контроля их уникальности

Я дед, мне с вебпаком удобно :) если вопрос про то, как настроить похожую инфраструктуру в Vite, то сходу я сказать не могу, так как не пользовался им ни разу.

ну не дед инсайд же) все еще впереди)

Я думаю, что настроить то же самое для Vite изи, так как цсс модули и тайпскрипт — это инструменты, не привязанные к бандлеру. Я использовал тут вебпак скорее для примера.

Веб все больше приобретает черты адекватной сферы деятельности человека :D

Такими темпами и JS языком со своей философией (помимо прото-ООП) станет

Ну, такое оно... Если SCSS проекта использует какие-то общие файлы, то они включаются в проекте несколько раз.

Алиасы модулей CSS/SCSS не поддерживаются в VSCode. Причём, просто потому, что разработчики плагина -"гордые и независимые'.

Выгрузить модуль стилей нельзя. В результате для больших и долгоживущих страниц html body круто засирается мусором

Генерация sourcemap кривая. Причем, у каждого плагина по своему кривая. И только потому, что разработчики ленивые жопы.

Ну, и куча всего подобного, что в "нормальных" языках и средах просто невозможно представить - таким продуктом просто никто не стал бы пользоваться, а в авторов бы тыкали пальцами и высмеивали.

Это не про плагин, это про общий урвень тулчейна. Плагин работает. Только выгружать стили нельзя.

Вебпаком и любым другим бандлером довольно легко выгрузить получившиеся стили. Мне кажется наоборот прикольно, что каждый инструмент делает свою конкретную задачу и передаёт результат дальше.

Модуль-то вы выгрузите, но сами добавленные стили от этого из страницы не пропадут. Для того, чтобы выгрузить модуль полностью (а не просто из кэша загрузчика webpack), нужно знать какому тэгу <style> соответствует модуль, а это информации нет. Т.е. только велосипед с ручной загрузкой/выгрузкой модуля.

Кажется, я перестал понимать, какую задачу нужно решить)

Грузите вы CCS-модули. Программа большая, в ней могут быть какие-то динамические части (модули). Если это single page application, то это всё грузится и никогда не выгружается.
Даже если вы динамически грузите CSS-модуль через require, то его содержимое добавляется в <head> и больше никогда не удаляется. В результате там скапливается фантастическое количество мусора и могут начаться тормоза браузера даже на небольших страницах по причине разрастания CSS таблиц до неприличных размеров.
Всё это усугубляется отсутствием поддержки каскадный модулей - т.е. если вы в CSS/SCCS используете (импортите) какие-то общие (глобальные) файлы со стилями, то это всё дублируется - на каждый импорт из CSS будет сгенерирован свой комплект одинаковых селекторов и правил. Даже если их в SCCS глобальными объявлять, то они на практике в стилях страницы будет куча одинаковых объявлений одинаковых селекторов. В сумме с невозможностью выгрузки CSS-модулей это приводит к тому, что в небольшом WEB-приложении может оказаться миллион селекторов и всё начинает тормозить и лагать при обновлении стилей.
А причина - сугубо в сырости непродуманности тулчейна. Все эти проблемы были сразу видны и предсказуемы, но во фронте своя атмосфера, и принято каждое новое колесо, которое уже 20 лет есть в других сферах IT, изобретать с болью и торжествами.

(вопрос новичка в вебпаке)

А если вы в двух разных файлах .js в двумя отдельными модулями реквайрите один и тот же модуль, а потом эти два ваших модуля собираете ещё где-нибудь в один файл, этот вот тот, которого вы реквайрили в них обоих - он повторится два раза?

(хотя почему бы ручками не проверить, но вдруг это вообще известная тема)

Оно как-то строит деревья/графы того, что грузит на js/ts? Чтобы если там где-то три обращения к одной вершине графа в итоге, чтобы её содержимое записать один раз?

(проверяя ручками я могу не дойти до всей глубины проблемы, если она имеется)

Мотивирую вопрос: если я правильно поняла, с модулями CSS проблема как раз такая - граф не выстраивается, и одно и то же грузится ровно по стольку раз, сколько оно реквайрится.

Вебпак повторяет логику работы стандарта ES Modules. Согласно этому стандарту, код модулей выполняется единожды вне зависимости от того, сколько раз они были импортированы.

А можно было просто ttsc вместо tsc использовать и плагины заработают...

ttsc заработает, но бандлеру это не помешает собрать код с ошибкой.

Если бы была возможность даунвота у меня я бы задаунвотил. Вообще уже опустили уровень хабра.. Если бы я подобные "статьи" публиковал репутации для даунвота было бы достаточно... Но в отличие от автора я не хочу такими "статьями" превращать хабр в помойку...

А где ваши гениальные статьи то?

Статья отличная. Есть чётко описанная задача, какую она проблематику решает и собственно представлено решение с описанием. Кому-то будет полезно.

Sign up to leave a comment.

Articles