Сложность в том, что в браузерных движках не просто рендеринг, но рендеринг быстрый и эффективный. Деление на слои, всякие reflow и так далее. Огромные кучи разных хаков. А тут ещё и недавно статья была про занятный файлик в хроме :)
Давайте представим, что вам для каждого пользователя нужно перевернуть одну строку. Вы можете сделать это на клиенте — для человека это займёт меньше 1 мс! Или же вы можете сделать это на высоконагруженном сервере. Перевернуть строку для 100 000 клиентов скушает пару секунд. Все эти пару секунд сервер (ну или поток, по крайней мере) будет простаивать и не сможет никому отвечать.
Пример утрированный, конечно, но я хотел показать, что операция может стоить для вас очень много, а для пользователя не стоить ничего. Вот именно это я имел в виду, говоря, что клиента нагружать можно больше, чем сервер.
Ну и вообще-то все обычные десктопные приложения замечательно работают на мощностях клиентов, так было всегда, и всем это ок. А вот если попробуете например сделать редактор изображений и реализуете всю графику на сервере, будет интересно посмотреть на его мощности и сколько это будет стоить.
Помимо сказанного ранее добавлю, что если бы и были мутабельные строки, оптимизировать это почти во всех случаях — что экономить на спичках. Тем более, что код на JS в половине случаев выполняется на клиенте, у которого вполне есть ресурсы (в отличие от сервера, который может быть высоконагружен, и там может хотеться экономить даже на переменных).
Так что — да, это в продакшене широко применяется.
classnames сделал пример короче на 5 символов. Я тоже его юзаю, но в данном случае не добавил, т.к. зачем привносить новые сущности туда, где они принципиально ничего не меняют.
Эм, нет. Моё сравнение абсолютно корректно. Я сравнил код, который получается на выходе. Потому что в самой статье, как я понимаю, также речь идёт об итоговом коде (который вполне себе появляется в веб-инспекторе, и его надо отлаживать). И тут button_size_big_a9f74cda406500c9b9c3e0125b242b0f никогда не будет читаемее, чем button_size_big.
Ладно, давайте тогда сравним исходный код. Если у вас классы в БЭМ разрастаются до нечитабельности, то вы что-то делаете не так. Это сродни тому, что использовать React без JSX и жаловаться, что код слишком большой и нечитабельный получается.
Потому что либо вы используете i-bem, и у вас примерно такой код:
Либо же вы пишете например в реакте, и вам стоит просто заюзать какую-нибудь функцию наподобие classnames, которая замечательно сделает всё то же самое с модификаторами:
Интересно кстати юридически, что значит «имеют право не пустить на сеанс». Вряд ли это прописано в законе. Есть где-то договор, который каким-то образом неявно подразумевается? Или вы просто имеете в виду, что есть где-то какая-то не подкрепленная юридически практика не пускать людей на сеанс?
По факту: сейчас довольно активно хожу по кинотеатрам, ни разу не запрещали войти из-за опоздания. Однажды покупал билет на фильм через 40 минут после начала :)
Да и, вообще говоря, довольно странно не пускать: кому охота ссориться с посетителем из-за такой мелочи? Плюс, как я слышал, возврат билетов это очень большой гемор для кинотеатра (т.к. билеты контролируются прокатчиками, которые очень подозрительны к их возврату — уж не хочет ли кинотеатр пустить деньги за покупку билетов мимо них?), поэтому кинотеатры, даже когда отменяется сеанс, скажем, пробуют выдать вместо этого какие-то бонусы или т.п.
Злобный, умный старикашка в теле маленького мальчика критикует вымышленный мир, что столь полон нерациональности
Разве это важно? Разве книга от критики главным героем мира стала хуже? Да нет же, это наоборот киллерфича этой книги, главная фишка, главное, что в ней интересно. Именно поэтому она и является книгой про методы рационального мышления, а не просто очередной (хоть и очень интересной) историей.
Вы сейчас совершаете ошибку выжившего. «На меня плохо не повлияло, значит ни на кого плохо не повлияет».
Да нет вроде. Я просто считаю, что выборка из одного элемента немножко точнее, чем выборка из нуля элементов.
Ошибка выжившего — это нерепрезентативность выборки, её тут нет.
Я читал эту книгу ещё с первых глав перевода, читал в процессе того, как она писалась и переводилась (конец и вовсе прочёл в оригинале, не стерпев). Перечитывал много раз. Кажется, во время первого чтения (не до конца, она ещё не было дописана) мне было ну примерно 15-16 лет. Если не 13-14. (да, сейчас мне 21)
Гарри в этой книге, предположим, имеет все признаки психопатии и по сути рекомендация такой книги ребенку приведет к тому, что он будет ставить себя на место героя-психопата, при этом считая его положительным героем, к соответствию с которым надо стремится?
И именно так я и делал. Ни к чему плохому, сколько могу судить, это не привело, а даже наоборот. Не знаю, кем бы я был без гпмрм :)
Но могу сказать, что Гарри очень много рассуждает о морали, доброте и хороших поступках (причём это его собственный осознанный выбор, не навязанный никем и никак). Собственно, он почти всю книгу пытается быть героем и делать добро. Просто потому что.
Отлично помню, что, когда сам когда-то думал о морали, и зачем она лично мне, это было одним из самых весомых аргументов.
Вы как тот человек в комментариях вк (под одним из обсуждений в официальной группе гпмрм), который не увидел за гпмрм ничего кроме очередной истории о волшебном мире, и посчитал, что эта книжка плохая, потому что недостаточно добрая. Интересно, что этот человек был полностью глух к любым аргументам и попыткам ему объяснить, в чём он ошибается.
А потом вы напишете стиль для .nav.active img, а потом вложите в .nav.active блок .dropdown-menu, который тоже может быть .active, и внутри которого тоже может быть img (и какие-то стили для .dropdown-menu.active img), и у вас внезапно стили от .nav.active img окажутся также стилями для .nav.active .dropdown-menu img.
Пример утрированный, конечно, но я хотел показать, что операция может стоить для вас очень много, а для пользователя не стоить ничего. Вот именно это я имел в виду, говоря, что клиента нагружать можно больше, чем сервер.
Ну и вообще-то все обычные десктопные приложения замечательно работают на мощностях клиентов, так было всегда, и всем это ок. А вот если попробуете например сделать редактор изображений и реализуете всю графику на сервере, будет интересно посмотреть на его мощности и сколько это будет стоить.
Так что — да, это в продакшене широко применяется.
Эм, нет. Моё сравнение абсолютно корректно. Я сравнил код, который получается на выходе. Потому что в самой статье, как я понимаю, также речь идёт об итоговом коде (который вполне себе появляется в веб-инспекторе, и его надо отлаживать). И тут button_size_big_a9f74cda406500c9b9c3e0125b242b0f никогда не будет читаемее, чем button_size_big.
Ладно, давайте тогда сравним исходный код. Если у вас классы в БЭМ разрастаются до нечитабельности, то вы что-то делаете не так. Это сродни тому, что использовать React без JSX и жаловаться, что код слишком большой и нечитабельный получается.
Потому что либо вы используете i-bem, и у вас примерно такой код:
Либо же вы пишете например в реакте, и вам стоит просто заюзать какую-нибудь функцию наподобие classnames, которая замечательно сделает всё то же самое с модификаторами:
В bem-react могут быть какие-то такие штуки, я не выяснял.
В CSS всякие препроцессоры вроде stylus тоже замечательно всё упрощают:
Где сим-карту оформляли, туда и идите!
str.split('').reverse().join('')
.По факту: сейчас довольно активно хожу по кинотеатрам, ни разу не запрещали войти из-за опоздания. Однажды покупал билет на фильм через 40 минут после начала :)
Да и, вообще говоря, довольно странно не пускать: кому охота ссориться с посетителем из-за такой мелочи? Плюс, как я слышал, возврат билетов это очень большой гемор для кинотеатра (т.к. билеты контролируются прокатчиками, которые очень подозрительны к их возврату — уж не хочет ли кинотеатр пустить деньги за покупку билетов мимо них?), поэтому кинотеатры, даже когда отменяется сеанс, скажем, пробуют выдать вместо этого какие-то бонусы или т.п.
Разве это важно? Разве книга от критики главным героем мира стала хуже? Да нет же, это наоборот киллерфича этой книги, главная фишка, главное, что в ней интересно. Именно поэтому она и является книгой про методы рационального мышления, а не просто очередной (хоть и очень интересной) историей.
Да нет вроде. Я просто считаю, что выборка из одного элемента немножко точнее, чем выборка из нуля элементов.
Ошибка выжившего — это нерепрезентативность выборки, её тут нет.
И именно так я и делал. Ни к чему плохому, сколько могу судить, это не привело, а даже наоборот. Не знаю, кем бы я был без гпмрм :)
Но могу сказать, что Гарри очень много рассуждает о морали, доброте и хороших поступках (причём это его собственный осознанный выбор, не навязанный никем и никак). Собственно, он почти всю книгу пытается быть героем и делать добро. Просто потому что.
Отлично помню, что, когда сам когда-то думал о морали, и зачем она лично мне, это было одним из самых весомых аргументов.
Кажется, что это вполне типичный компонент с типично используемым scoped styles.
Затем пишете такой вот jsx:
Итоговая ваша вёрстка выглядит примерно так:
Сравним читаемость с БЭМ?
А потом вы напишете стиль для .nav.active img, а потом вложите в .nav.active блок .dropdown-menu, который тоже может быть .active, и внутри которого тоже может быть img (и какие-то стили для .dropdown-menu.active img), и у вас внезапно стили от .nav.active img окажутся также стилями для .nav.active .dropdown-menu img.