Мы используем фреймворк JavaScript MVC, основанный на событиях, в нашем приложении, но с проблемами производительности с большими наборами данных. Мы применили многие из тех же методов, которые использовались в Реаге, чтобы облегчить наши проблемы (рендеринг с интервалами, сравнение состояния данных и обновление только того, что изменилось), но я беспокоюсь, что мы идем по пути реализации наших собственных, фреймворк. Прежде чем мы примем React для наших данных с большими пользовательскими интерфейсами, каковы альтернативы?
Реагировать на альтернативы
Ответ 1
Отъезд RiotJS. Это супер-легкий (всего несколько килобайт), и это проще использовать.
Riot приносит пользовательские теги ко всем браузерам, включая IE8. Think React + Polymer, но с приятным синтаксисом и небольшой кривой обучения.
Ответ 2
Странно, никто еще не упомянул Vue.js
Vue.js - это библиотека для создания интерактивных веб-интерфейсов. Он обеспечивает реагирующие на данные компоненты с помощью простого и гибкого API.
Awesome Vue.js - кураторский список удивительных вещей, связанных с Vue.js
Это прямо сейчас!
Ответ 3
Вы можете рассмотреть некоторый слой поверх React для лучшего управления состоянием.
- Om - хорошая библиотека, если вы в порядке с ClojureScript, вы можете прочитать об этом больше в author блог;
- Quiescent - легкая абстракция ClojureScript над React;
- Reagent - минималистический интерфейс ClojureScript для реагирования;
- Morearty.js - централизованное управление состоянием для React в чистом JavaScript.
Эти библиотеки используют неизменяемые структуры данных для представления вашего состояния и определяют метод shouldComponentUpdate
для каждого компонента, который просто выполняет сравнение с помощью быстрого оператора ===
. Эта оптимизация должна обеспечить большую скорость для вашего мощного пользовательского интерфейса, в то время как разумные средства управления состоянием должны быть очень полезны при организации и поддержке вашего кода. По моему опыту, очень сложно управлять изменчивым состоянием, разбросанным по компонентам.
Ответ 4
Недавно я обнаружил Deku
Ответ 5
Самым известным, конечно, является Angular JS, который поддерживается Google (не это важно, но я просто подумал, что это интересно, учитывая, что Facebook делает React). Для углубленного сравнения двух см. эту ссылку.
Вот несколько других опций:
Ответ 6
вы можете попробовать http://www.ractivejs.org/, он использует ту же концепцию виртуального dom, что и facebook response
цитата из блога ractive http://blog.ractivejs.org/posts/whats-the-difference-between-react-and-ractive/
Самое яркое сходство - использование виртуального DOM. подобно Ractive, React обнаружил, что создание абстрактного представления DOM позволяет проводить молниеносные операции, сводя к минимуму количество манипуляций с DOM (узкое место в большинстве webapps), которое необходимо иметь место. Это также облегчает рендеринг на стороне сервера без каких-либо от сумасшедших хакеров, которые должны были использовать другие инструменты.
Ответ 7
Прежде чем сбрасывать существующий код, вы можете попробовать интегрировать React в ваше приложение MVC как только слой представления. Например, интеграция с базой очень проста:
- http://www.thomasboyt.com/2013/12/17/using-reactjs-as-a-backbone-view.html
- http://todomvc.com/examples/react-backbone/
- https://github.com/tastejs/todomvc/tree/gh-pages/examples/react-backbone
Кажется, нет никаких готовых к производству альтернатив React, которые дают вам только "V" в MVC. Хотя есть интересные идеи там.
Чтобы ответить на ваш вопрос, Mithril - это структура MVC, которая использует виртуальную DOM и имеет хорошую документацию.
Если у вас уже есть проблемы с производительностью при рендеринге большого количества элементов, переход на что-то вроде Angular, Ember или RiotJS вряд ли будет самым прямым путем к исправлению.