Подробнее
Харизматичный и амбиц... й @strizhechenko «Айтишники за 30 не умеют саморазвиваться, они все старые, брюзгливые, у них в продакшне легаси, и они используют один и тот же фремворк неделями» 20:32 • 07 янв. 22 • Twitter Web App
Буквы на белом фоне,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,twitter,интернет
Еще на тему
Так для этого большая часть еблиотек и пишется
Но возможно я не достаточно хорошо слежу за происходящим.
А по факту, если рассматривать в контексте не "одностраничный сайт", а современное веб-приложение, то с его подходом получается:
- лапшекод, найти в котором элементарное "какой же кусок кода и где влияет на эту кнопку" задача на часы
- десятки строк с подключением внешних скриптов плагинов и стилей в глобальную область
- отсутствие типизации (боль при изменениях и рефакторинге)
- отсутствие тестов
- сильная завязка на текущую структуру и верстку проекта, небольшое исправление ломает все в самых неожиданных местах
- невозможно масштабировать или переиспользовать, так как на другом проекте все эти плагины придется перенастраивать под новую верстку фактически с нуля
я могу продолжать еще долго, но думаю, все уже и так все понимают несостоятельность консервативных дедовских взглядов.
Еще есть PWA и service worker`ы для кэширования, code splitting для уменьшения бандлов, нормальный lazy loading целых модулей по запросу, продвинутые инструменты отладки, реактивность, tree shaking при рендере и тд и тп.
ЫЫЫ у вас каждую неделю новый фрейморк ЫЫЫ
Да хуй там, у нас каждый день либы обновляются, что значит - они живы и развивается веб в целом. А новые фреймворки - да кто ж их считает, все пользуются популярными инструментами, которых там штук шесть на разный вкус.
Допустим, ты хочешь подключить 100 разных скриптов к своему сайту, где каждый отдельный файлик какая-то фича, типа красивой менюшки или возможность добавлять коменты. Если тупо подключать все сразу по очереди на одной странице, то браузер будет это делать достаточно долго, так как за раз он будет грузить по 10 штук, и есть вероятность, что что-то из этого списка не загрузится. Копировать код ручками и кидать все в один файл? Можно, конечно, но это долго и неэффективно.
Далее, допустим ты подключил библиотеку, в которой есть 10 крутых фич. Но тебе надо использовать лишь одну из них. Вытаскивать ее оттуда отдельно? Опять же, можно, но сложно, так как часть функционала внутри это фичи может зависить от другой фичи, то есть копировать их надо будет все равно вместе, иначе ничего работать не будет.
А есть еще всякие иконочки, красивые шрифты, css-стили (которые указывают какой ширины будет вот этот блок и в какой цвет его покрасить), и т.д. И их тоже желательно скомпоновать в один файлик, так как один будет загружен куда быстрее, чем 100 (а может и более) разных.
Все эти проблемы решает webpack, его нужно слегка настроить, указав откуда брать скрипты и куда в итоге все положить. При этом, он сам проверит, какие куски кода потенциально никогда не используются в твоем случае (tree-shaking) и выкинет лишнее. В результате, у тебя будет вместо сотен отдельных файлов, лишь пара-тройка (тут тоже все относительно, иногда файл может получиться один, иногда, когда есть возможность разбить на модули, их будет больше, так как это позволяет грузить не все модули сразу, а только по необходимости, lazy-loading).
Вообще-то да, охуели.
Или это просто нынешняя порочная парадигма "раз что-то не обновляется - значит, оно мертво".
Где-то тут на реакторе читал из четвёртых рук высказывание какого-то разраба игр под андроид: у них там принято хуячить обновления каждые несколько дней, а если обновлять нечего - хуячить пустые обновления, а иначе игра опустится в рейтинге, ведь она же мёртвая.
Чтобы что-то обновлять, нужно сначала понять, нужно тебе вообще это обновление или нет. Не нужно - не трогай, работает и так (а вот после хуёвого обновления может и перестать работать).
- Да, если либа не обновляется, она мертва. Потому что обновляется все вокруг нее - язык, спецификации, зависимости. Если она не успевает за ними, в определенный момент ей перестают пользоваться. Либо форкают и продолжают поддерживать, если она так нужна. Обновление либы - это не то же самое, что обновление windows или steam.
- Либы и фреймворки - это не игры на андроиде. Они являются продуктом совершенно другой категории. Некоторые обновляются стабильно каждую неделю. И в эти обновления входят фиксы и оптимизации за прошедшую неделю. И вообще, например, через npm или nuget ты можешь поставить себе либу абсолютно любой версии, которая тебе нужна. Ты можешь это залочить, и в конкретном проекте даже после развертывания с нуля она поставится той версии, на которой залочена.
То, про что ты говоришь, актуально в фреймворке express, который до сих пор использует бородатую версию node js и ворох уже привычных возможностей в нем поддерживается полифиллами или подключается сторонними библиотеками. Хорошо ли это? Нет. Почему они так поступили? Хуй знает.
> "node_modules у меня уже весит пару сотен мегабайт - вы там вообще охуели?"
> Вообще-то да, охуели.
Нет, не охуели. У проектов могут быть и глобальные, и локальные зависимости. Я могу сделать так, что папка node_modules в проекте будет весить пару килобайт, потому что все зависимости будут лежать в глобальном скоупе. Собственно, как это работает с каким-нибудь C#.
И npm проекты никогда не тянут за собой эту папку. В репозитории лежит всего пару мегабайт сурсов. Когда репозиторий переносят, переносят только сурсы и устанавливают зависимости командой npm install в терминале.
Да да, я про хабр. Переписали со статики на SPA, все стало хуево и тормозить, особенно, комменты.
А то что коменты тормозят, это уже не вина SPA, а проблемы конкретной реализации дерева коментов. Видимо, посчитали, что жалуются не так часто или проблемы возникают только в постах с очень большим кол-вом коментов и решили пока ничего не менять, я не знаю.
Любой работник двумя годами моложе вас — неопытен, любой работник пятью годами старше вас — отсталый старик.
*годами