Прежде всего позвольте мне сказать, что я не занимаюсь веб-разработкой. Основное направление моей работы - Android и дизайн. Время от времени я помогал друзьям с их веб-сайтами, вот и все.

Время от времени я понимаю, что мне нужно переделать сайт. Обычно я делал это с помощью стороннего шаблона, подключенного к моим данным через серверную часть PHP. Очевидно, это был простой путь, поэтому я решил продвинуться вперед с некоторой внешней структурой, которую мне еще предстояло выбрать, и преобразовать PHP только в версию API самого себя. Ну что ж…

Не стесняюсь сказать, что (все еще) ненавижу каждую секунду разработки веб-приложения. Это наихудший и самый популярный тип приложений для создания в настоящее время - так что я должен держаться в конце концов, как и многие другие до меня, я могу сделать то же самое.

Первое, что мне нужно было сделать, это выбрать интерфейсный фреймворк. Поскольку я профессионально занимаюсь разработкой на Kotlin, мне нужна была строгая типизация, потому что, черт возьми, вы этого не сделаете, и маршрутизация, интегрированная во фреймворк. Дела пошли под откос, но не беспокойтесь - я, в конце концов, выбрал фреймворк.

Естественно, я понятия не имел, какой фреймворк я хочу использовать, я никогда не интересовался ими и слышал только слова типа «webpack» или «усы» от коллег, но все же , Меня это не интересовало, поэтому я не стал их гуглить. Однако я обнаружил, что существует как минимум 3 основных фреймворка - Vue, React и Angular.

Реагировать. Я как-то вспомнил, как случайно замалчил это, когда просматривал библиотеки Facebook для Android. Мне удалось поиграть с этим немного дольше, чем хотелось бы, просто потому, что он такой простой, понятный и несколько аккуратный. Однако я не нашел способа включить в него маршрутизацию, и перезагружать все приложение каждый раз не было «оптимизированным» для меня. Я знаю, что способ есть, но если он не очевиден, быстрый и с поддержкой Google, я не думаю, что способ есть.

Vue. Несмотря на то, что в последние месяцы на него сильно переключились, я не нахожу в нем особой привлекательности. Все (документы) написано на javascript, хотя и поддерживает машинописный текст, который мне даже не удалось скомпилировать. И что еще хуже, ему не хватает безопасности типов в своей основе (насколько я понимаю), что в конечном итоге довольно сложно интегрировать с машинописным текстом. И да, хваленые модули тоже не помогают. Это усложняет задачу. Я просто не могу понять, почему в эпоху обфускации компиляторов существуют чертовы модули, которые так усложняют работу. Тем не менее, я должен сказать, что мне очень нравится веб-интерфейс.

Угловой. Я, как разработчик Android, в основном взаимодействую с Angular, поскольку Google использует его для создания большинства своих веб-приложений, если не всех. Есть маршрутизация, поддерживает только машинопись. Думаю, я нашел себя победителем. Если погрузиться в нее, в ней есть все, что мне нужно, и даже больше! Есть обертки (?) Для каждой библиотеки javascript, которая может мне когда-либо понадобиться. Маршрутизация в основном встроена в него, и все просто работает.

Хорошо, через несколько дней я смог создать себе несколько простых компонентов верхнего уровня с какой-то действительно базовой логикой, и наступает время для какой-то структуры css (ну на самом деле библиотеки или даже пакета классов …). Я использовал materializecss очень давно, но поскольку у меня есть angular с MDC, мне вообще не нужны компоненты ...

Я снова поискал в Google и нашел несколько фреймворков. Статистики использования не было, поэтому я не знал, к какому меньшинству буду принадлежать, тем не менее, мои выводы есть: Bootstrap (очевидно), Bootstrap Material, Bulma, Semantic UI и мой победитель, до которого я доберусь всего через секунду.

Чтобы уточнить, эти фреймворки должны помочь мне делать вещи быстрее, в любом случае в css. Поскольку CSS - самый опасный инструмент, с которым я сталкивался за очень долгое время (больше похоже на возвращение, но что бы там ни было), я ожидал, что они быстро и без шаблонов обернут мои макеты.

У меня есть практически все, что мне нужно, что касается компонентов, включенных в MDC и Angular Material, поэтому мне не нужны раскрывающиеся списки и другие бесполезные вещи, которые просто дублируют модули, которые я включил с Angular. Что ж, если мне это действительно не нужно, я лучше найду просто голую сетку, - сказал я себе. Поскольку Bootstrap чертовски популярен, пользователи извлекли из него только сетку, и это как раз то, что мне нужно для этого проекта! Одна из таких вариаций - Flexbox Grid.

Хорошо, вот и начинается разочарование. Как я уже упоминал, CSS - очень опасный инструмент для работы. Все можно сделать тысячей разных способов, но только один из них всегда правильный. На мой взгляд, это показатель того, что он не пуленепробиваемый и только добавляет работы. Конечно, я обожаю, что с ним можно делать абсолютно все, но какого черта это реализовано по-разному во всех браузерах? Зачем мне делать эти изменения префиксом, если я не виноват ?!

Представьте себе: я работаю с Android, чтобы заработать себе на жизнь, и для этого требуются макеты XML (ну, это не так, но ради этого примера скажем так), представьте, что для всех этих размеров экрана вам нужно будет позаботиться о префиксе разных XML реализации декодера по производителям. Это было бы не круто, правда? Я могу сказать прямо здесь, прямо сейчас, что я бы оставил разработку приложений для Android исключительно по этой причине.

В настоящее время мы широко используем макет ограничений для Android. Возможности его использования настолько широки, что вы можете создать абсолютно любой макет, который придумают ваши дизайнеры. У него есть собственный небольшой редактор, в котором вы можете перетаскивать компоненты, устанавливать их ширину / высоту, располагать их по своему вкусу. Это то, чего я ожидал и от Интернета. Почему такого нет? Это, безусловно, крупнейшая отрасль, и я просто не могу найти редактор макетов в любой форме или форме. Это смешно…

В конце концов, я теряю 98% времени при разработке веб-приложений на борьбу с укладкой компонентов CSS так, как я хочу.

Я просто не понимаю, почему HTML с CSS все еще актуален… Спустя всего 3 десятилетия мы все еще используем те же инструменты, обновленные функциями совместимости, которых у нас не было несколько лет назад. Мы строим склеенную груду мусора. А сейчас еще сложнее переключиться на что-нибудь другое, потому что все сайты написаны на этой ерунде. Если бы сейчас это был такой инструмент, на то, чтобы переключиться, потребовалось бы еще как минимум 10 лет.

Тем не менее есть много других вещей, которые я не могу понять. Интернет работает слишком медленно, потому что javascript никогда не создавался с расчетом на производительность. Большинство веб-сайтов настолько плохо оптимизированы, что вы будете извлекать до 10 МБ контента каждый раз, когда загружаете его, и опять же кеширование является вашей проблемой, а не браузером. Он мог просто загружать пакет, показывать красивую загрузку в первый раз или даже загружать страницы, такие как модули, - загружая их по мере необходимости. Очевидно, что для этого потребуется огромная работа от крупных игроков в этой области. (Не путайте с модульностью в текущих фреймворках, это просто не работает так, как я ожидал бы.)

Наконец, я продвигаюсь очень медленно, создавая один компонент за другим, а за это время успеваю сделать весь API и логику Angular. Проклиная каждую строчку css, которую я пишу, я хочу, чтобы появился совершенно новый набор инструментов.