Pull to refresh
91
0
Андрей Прокопюк @Andre_487

Пользователь

Send message
Знаете, что я скажу вам, господа? Мир фронтенда — бегун на костылях в принципе, но бегун быстрый. У нас особая ситуация — наши программы выполняются в браузерах, возможности которых ограничены, конкретные браузеры выпускаются разными, никак не связанными командами, а версии обновляются неравномерно.

HTML изначально был предназначен для статей, связанных гиперссылками, но разработчики и пользователи захотели красивых страничек, и начали использовать таблицы для позиционирования и всякие атрибуты для украшательств. Это костыль или чистейший гений архитектуры? Конечно, костыль — таблица же для данных, а не для верстки страниц.

Версии обновляются медленно, а мы хотим новых возможностей JS или писать для браузера на совершенно другом языке. Появляются полифиллы, транспайлеры и компиляторы в JS. Так что же, разве не костылями являются Babel или TypeScript? Да конечно костылями — это же надо, компилировать высокоуровневый язык в JavaScript! А кое-кто ведь и низкоуровневые компилирует! Это вынужденная мера, но путем таких костылей мы получаем огромные возможности.

Так же, поскольку у нас нет иного выбора, кроме CSS, а возможности его ограничены, приходится на этих ограниченных возможностях строить методологии, которые оградят разработчиков от стрельбы по ногам и облегчают масштабируемость и поддерживаемость кода. Отсюда и появились БЭМ и другие его братья. Да, они ограничивают некоторые возможности CSS и привносят некоторые правила, которые можно назвать костылями с точки зрения академической архитектуры. К примеру, селекторы в БЭМ — классический пример борьбы с коллизиями при использовании глобальных переменных. Но это не от хорошей жизни — в современном CSS нет других возможностей создавать пространства имен.

Но что делать, отказаться от любых хаков, лишь бы не вылезать из калеи, в которую нас загоняют веб-технологии в чистом виде? Конечно нет, если бы мы так делали — веб не пришел бы туда, куда пришел.

Веб — богатейшая почва для набросов, можно сорвать покровы с любой актуальной технологии и методологии и потешить тем самым самолюбие, но стоит ли этим заниматься? Может быть, лучше было бы разработать достойную альтернативу или пойти и заняться улучшением какой-нибудь из текущих? Может быть, оно само по себе и не взлетит и не станет лучше, но свежая идея — тоже очень важная в мире веба штука.
На Маке Ctrl+L так же работает. Это классический шорткат из терминалов. Про Cmd+K я даже и не знал :)
Я уверен — виноват именно роутер из статьи, поэтому лучшего места для этот репорта не найти
На практике, во множестве случаев применение неизменяемых данных увеличит общую производительность вашего приложения, даже если определённые операции станут более затратными в отдельности.

Как частенько договаривал неизвестный Andre_487 за известным Станиславским: не верю! Есть ли бенчмарки конкретных реализаций на JS?

Можно понять, как иммутабельность и чистые функции делают быстрее программы на языках, где это ядерная концепция, позволяющая оптимизировать и разводить по потокам при компиляции, но в JS ведь это отсутствует и оптимизации в современных машинах рассчитаны совсем не на подобные паттерны.
У JS и PHP активный обмен опытом: в PHP объявляют вложенные функции, в React пишут HTML среди кода
Потому что мы злодеи — поощряем страдания того, кто сам погрязает в собственном безумии.
То есть, все-таки что-то планируется, просто позже, когда продукт дойдет до кондиции?
Можно узнать, почему категорически не планируется публичных версий под Linux?
После многолетних экспериментов определили везде пи через #define

А вы думали, почему дистрибутив разрастался?
Я вот зашел в основном посмотреть на то, как эти классы должны будут выглядеть. Я не специалист в С, но увидеть такое хотел бы )
Вы поразитесь еще больше, узнав, что так умеют не только на PHP. Да что там, большая часть кода, который прекрасно работает, похожа на огромную кучу навоза.
А как в современных версиях PHP с управлением памятью? Возможно ли эффективное длительное выполнение скрипта?
Хотелось бы попрдробнее узнать о методике Benchmark.js: как именно выбирается количество повторов, что значит «столько раз, чтобы получить статистически значимые результаты»? Есть ли такая информация?
Можно задать обратный вопрос: а почему код изначально не на GitHub'е? )
В императивной шаблонизации я сторонник подхода, при котором представление — это практически чистый HTML, код в котором ограничивается выводом значений переменных, циклами, ну, может, еще какими-нибудь элементарными вещами. Мне кажется, что много HTML — мало кода читается гораздо лучше и выглядит гораздо чище, чем много HTML и много кода. А уж о бизнес-логике в представлении и речи не было.
Отличная идея — разнообразить БЭМ новыми языками. Но не совсем правильно утверждать, что для БЭМа все делается на JS для Node.js. Блок в библиотеке представляет собой набор файлов, реализующих разные «технологии»: файл block.deps.js для зависимостей, block.css — для нормальных стилей, block.ie.css — для костылей IE, block.browser.js — для браузерного кода, block.bh.js — шаблон для выполнения в BH и так далее. Блок, таким образом, является (почти) самодостаточным компонентом, содержащим код для всего стека разработки фронтенда. Как именно блоки со своими наборами технологий выводятся на страницу, во многом определяется данными в формате BEMJSON — то есть, фронтенд строится по data driven парадигме. Как именно все это собирается в страницы, можно изучить на примере.

Поэтому если идти до конца по этому пути, нужно реализовать свою технологию, которая будет использовать PHP как технологию блока. Кстати говоря, не так давно появилась подобная штука: порт на PHP шаблонизатора BH: github.com/bem/bh-php
Интересный момент в том, что в PHP, откуда, видимо, создатели и черпали вдохновение, уже много лет считается хорошей практикой не смешивать HTML и логику. Именно на этом настаивают сторонники дополнительных шаблонизаторов в PHP, который сам по себе неплохой шаблонизатор.
Ну, конкретно этот шаблон (кстати, что это за шаблонизатор?) — совершенно не читаемая каша. Уж лучше было бы применить немного PHP для улучшения читаемости — скажем, составлять длинные списки классов с помощью массивов.

Есть же отличные примеры правильной шаблонизации на чистом PHP — посмотреть на Yii, Kohana или любой другой MVC-фреймворк.
Мне кажется, отсутствие возможности размахнуться художествами в коде — не особенно плюс, хотя и вынуждает держать логику отдельно от шаблонов.
Интересно было бы узнать, какие при этом цены

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity