Ну хорошо, как обычно (хотя я понял, что это только ваше мнение), любители React всегда используют одни и те же аргументы, чтобы защитить его, вводя людей в заблуждение относительно того, что делает Vue.
React полностью поддерживает Javascript, Vue - нет.
Это неверно по многим причинам, и как говорится в этой цитате из документации React:
Каждый элемент JSX - это просто синтаксический сахар для вызова
React.createElement(component, props, ...children)
. Итак, все, что вы можете делать с JSX, также можно сделать с помощью простого JavaScript.
Эй, эй, что ты только что прочитал? «с простым JavaScript», что означает, что JSX - это не просто JS :)
Теперь, чтобы прояснить:
- Vue не заставляет вас использовать шаблоны, здесь есть чистые функции рендеринга JS
- Будь то JSX или расширенный HTML, оба они не являются чистым JS, а только синтаксическим сахаром.
Синтаксический сахар не делает вас плохим разработчиком, если нет, почему бы пользователям React не использовать чистые методы / функции рендеринга, а? То же самое и с шаблонами Vue.
Пользователи React: «Это просто Javascript», и это правда.
Как было показано ранее, это неверно, если вы используете JSX. Vue также может быть чистым JS с функциями рендеринга, так что это просто бросает слова в воздух.
Кажется, что в Vue много ненужной магии
Вы говорите ненужное, а я говорю оптимизация и экономия времени.
Разве экономия времени не является одной из основных причин использования фреймворка или библиотеки в первую очередь? Да, это так.
Стоит ли напоминать об ужасной проблеме shouldComponentUpdate и «потраченном впустую» рендере React (цитата из документации React)? :)
Мне не нужен v-if, потому что у меня есть старый скучный обычный if
Опять же, это неправда, большую часть времени в React мы будем использовать не обычное if, а тройное и IMO, следующее имеет меньшую ясность, чем v-if.
- ИМО Менее ясно, чем -
Шаблоны также создают проблемы с областью видимости. Если я импортирую некоторые статические данные в свой компонент React, я могу использовать их в своей функции рендеринга, потому что применяются все стандартные правила области видимости Javascript.
Еще раз, Vue не заставляет вас использовать шаблон, использовать функцию рендеринга или JSX, и область действия будет применяться.
Однако я считаю, что лучше отделить проблемы от того, какие данные должны быть привязаны к визуализированному представлению и чего не должно.
Инструменты
Prettier при создании имел в виду JSX, в противном случае у вас были бы те же проблемы с форматированием, что и в шаблонах Vue. Однако сегодня он отлично работает как с React, так и с Vue. Опять же, просто используйте функции рендеринга в обоих и никаких проблем.
В основе React и Redux лежит неизменность
Кажется, что Vue нельзя использовать с Redux, хотя можно.
Кажется, что Vuex - единственное решение для управления состоянием с помощью Vue, пока нет и т. д. и т. д.
По крайней мере, Vuex не заставляет вас использовать декораторы, что означает, что вы можете использовать синтаксис ES5, если хотите, что сложнее с Redux.
Напоминаем, что состояние Vuex можно изменять только с помощью функций мутации, поэтому оно фактически является неизменным в своем способе использования. Vuex полностью использует реактивность Vue, поэтому он не может быть таким же, как Redux, и поэтому у него есть геттеры, которые я считаю очень полезными.
из-за всей магии геттеров / сеттеров, которые Vuex добавляет в магазин
Как было сказано выше, вы не должны ничего устанавливать напрямую с помощью Vuex.
Боковое примечание: когда вы используете много редукторов в Redux, они в конечном итоге будут объединены в глобальное дерево состояний, что означает, что либо он будет видоизменять дерево (привет, мутация), либо (что еще хуже?), Создает новую копию дерева, что означает, для редукторов, вызываемых в большом проекте, потенциально существует большая перегрузка действий, которых можно было бы избежать. Это всего лишь предположение, но обычно это тот случай, когда мутации предпочтительнее, поскольку JS в любом случае не является полностью функциональным языком.
Это все, что я думаю. Я не ненавижу React и считаю его довольно приятным в некоторых моментах, но аргументы, приведенные до сих пор в пользу React для противодействия Vue, для меня неубедительны.
Как я продемонстрировал, Vue может быть полностью JS, если вы хотите и пользователи React в любом случае не используют полный JS (JSX - это не JS, мне жаль вам это говорить).
Процитируем документ React:
React не требует использования JSX, но большинство людей находят его полезным в качестве наглядного пособия при работе.
То же самое и с Vue: люди находят шаблоны более наглядными, чем JSX или функции рендеринга, поскольку веб-дизайн в основном состоит из HTML и CSS, а не JSX.
Когда разработчики React начнут писать так, как показано ниже, я, может быть, заткнусь :)
Опять же, у Vue то же самое :)
Оясуми насай. Сайонара.
PS: Используйте инструменты и продукты, которые вам нравятся, и освоите их. Каждый инструмент создан для определенной цели, и всегда трудно сказать, какой инструмент лучше другого, потому что это зависит от выполняемой работы и пользователя инструмента.