Наш основной веб-интерфейс продукта разрабатывается с 2010 года и долгое время нам хорошо служил. С годами размер нашего продукта рос, браузерные технологии стремительно развивались, и наш технологический стек стал пределом (как для обслуживания, так и для производственной точки зрения). Нам пришлось столкнуться с задачей рефакторинга всего нашего устаревшего кода на более мелкие компоненты, современный стек внешнего интерфейса и повышения нашей производительности.
Переход от «старого» стареющего стека интерфейсных технологий к современному «блестящему» - это соображение и дилемма, с которыми почти каждый разработчик интерфейсного интерфейса сталкивается хотя бы раз в своей карьере. Недавно мы решили эту проблему и решили постепенно исключить KnockoutJS из нашего веб-приложения. В этой статье мы попытаемся обрисовать, почему такой переход был сочтен необходимым, и как мы выбрали из широкого набора доступных фреймворков.
KnockoutJS - отличная библиотека; однако, если приложение достаточно большое / сложное, оно имеет некоторые ограничения:
Выбор технологии обычно предполагает ряд компромиссов; мы спросили себя, какие аспекты нового фреймворка для нас более ценны, а какие - просто приятные бонусы, которые при необходимости можно не заметить. Мы проанализировали следующие моменты:
Экосистема JS невероятно богата библиотеками, фреймворками и даже языками, которые в нее компилируются, поэтому нам нужно было фильтровать потенциальные варианты, не «пробуя их все». К счастью, наши требования помогают в этом. Мы стремимся к простоте внедрения и функциональной совместимости, поэтому такие вещи, как Elm или Svelte , не соответствуют требованиям. Кроме того, библиотеки, подобные Inferno , очень интересны, но они не идеальны для нашего варианта использования, поскольку их сообщество слишком мало, и риск их исчезновения или отказа от их разработки велик. После этих размышлений (и после удаления наших «старых» альтернатив, таких как Ember и Backbone, это не имело особого смысла с точки зрения модернизации), мы остаемся с «большой тройкой» JS-библиотек / фреймворков, которые были оценены более подробно. глубина.
Angular - это полнофункциональный фреймворк, цель которого - предоставить разработчику все необходимое для разработки современного веб-приложения (сетевые запросы, управление состоянием, набор инструментов, тестирование). Его упрямый подход означает, что легче (хотя иногда и ограничивает) определить «способ Angular» для выполнения чего-либо, что дает вам четкий способ кодирования и организации вашего проекта. В нем есть Typescript для обеспечения статической типизации, проверки типов и вывода.
В то время как множество функций и инструментов, предлагаемых Angular, интересны, его «монолитный подход» беспокоил нас как с точки зрения производительности, так и с точки зрения сложности. Поскольку все уже включено, проекты, которые уже используют другие библиотеки, могут подвергаться риску включения дублирующих функций (и увеличивать сложность).
React намного легче и тоньше, чем Angular; это библиотека, а не фреймворк, и он передает сторонним лицам такие вещи, как маршрутизация, управление состоянием и сетевые запросы. Это вызывает множество вариантов, но также обременяет разработчика поиском и интеграцией «правильного» плагина / библиотеки для многих вещей, мы бы предпочли более оптимизированное решение. Его также труднее всего изучить из-за подхода к функциональному программированию и использования JSX вместо старого простого HTML. Также стоит упомянуть, что во время нашего оценочного периода React также входил в сферу лицензирования FUD (бояться неопределенности и сомнений).
Vue.js - это промежуточный подход между «включенными батареями» Angular и минимальным вариантом React. У него есть «официальные» библиотеки для маршрутизации и управления состоянием (хотя и необязательные - они не входят в ядро, но ими управляет основная команда Vue, поэтому они гарантированно хорошо с ним работают). Кроме того, он разработан для «постепенного внедрения», что хорошо подходит для наших потребностей в области взаимодействия, и его легче изучить по сравнению с Angular и React.
Как вы уже догадались, мы остановились на Vue.js, поскольку его сильные стороны лучше соответствуют нашим требованиям, а его недостатки не слишком актуальны для нас. Итоги нашей оценки Vue.js:
С Vue было приятно работать: он «заставляет» вас писать и четко организовывать код, он очень доступен и хорошо интегрируется с нашими существующими базами кода. Нам очень понравился подход «однофайловый компонент», который позволяет нам сохранять наш код как можно более компактным, не распределяя его между файлами CSS, JS и HTML.
Аспекты, которые беспокоили нас больше всего, связаны с инструментами: поскольку отдельные файловые компоненты требуют, чтобы вы писали файлы .vue вместо «стандартных» .js, нам было сложно настроить параметры с помощью eslint, babel, различных инструментов документации и автоматизации. . Варианты, предоставленные сообществом, оказались недостаточно хорошими, и мы были вынуждены внедрять собственное решение чаще, чем мы прогнозировали. Примером является подход, который мы используем для документации: такие вещи, как Vue Styleguidist , великолепны, но слишком ограничивают - сейчас мы тестируем гибридное решение на основе JSDoc ( documentation.js ) для синтаксического анализа и Vuepress, чтобы создавать фактическую документацию в красивой и настраиваемой форме. .
Вероятно, этот момент стоит расширить в будущем: нам нужно лучше понимать и интегрировать инструменты, специально разработанные для Vue. В идеале мы хотим создать стек технологий, который был бы достаточно полным, чтобы удовлетворить все наши текущие потребности, но также и достаточно простым, чтобы запуск нового (малого или большого) проекта был безболезненным и доступным для тех, кто не имеет большого опыта в этом.
Несмотря на эти «проблемы», мы очень довольны своим выбором. Мы с нетерпением ждем возможности учиться и получать больше удовольствия от работы с Vue.
Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.
На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.
(Предупреждение — это сатира, предназначенная для радостной подрывной деятельности — определенно не для детей) Вы видели, как ваши мама и папа прячутся на кухне и курят эти вонючие сигареты. Они говорят вам.
Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.
Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.