Извините, но я кажется не понял посыла сего опуса. Что вы имеете в виду под словами «чистый JS»? Отсутствие фреймворков? Или ручное управление DOM?
Вы продемонстрировали решение очень простой задачи. Любой маломальски знакомый с веб-разработкой решил бы эту задачу примерно так же. Проблемы ведь появляются при масштабировании :) Чем больше проект, чем больше связанность различных элементов и чем больше интерактивности, тем сложнее становится управлять всем этим в ручную. Именно за этим и появились фреймворки)
Разумеется, для простых вещей, например лэндинг с каким-то уровнем интерактивности спокойно обойдется без сторонних библиотек. В таких задачах совершенно излишне подключать что-то мощное.
Вообще, конечно удачи в изучении языка. Быть увлеченным студентом прекрасно.
P.S. У вас что-то ужасное с форматированием кода. Лучше исправить.
Мне кажется, что вы делаете ошибочные выводы.
Давайте начнем с начала. Для чего нужен Redux? Для управления состоянием приложения. И надо отметить, что эта задача выполняется очень хорошо. Redux задает четкие правила изменения данных в приложении, вы всегда знаете что именно вызвало изменение состояния. Однонаправленный поток данных, изменение состояние через простые чистые функции, которые легко тестировать. И все это достигается просто из коробки, без дополнительных инструментов. Да, конечно, цена этому некоторый шаблонный код (имена экшенов, экшен-крейторы и т.д.), но это ни «сложно», ни «неэффективно». Скажите, вы действительно на каждый новый компонент создаете новый редюсер, экшен? Не знаю как у вас, но по-моему опыту большая часть компонентов — это глупые компоненты, они просто не требуют тех шагов, что вы описали в своей табличке. Мне кажется, что вы преувеличиваете проблему.
Работа с redux сложна неэффективна. Это и является причиной появления надстроек над самим redux, что опять же подчёркивает проблематику.
А не думаете, что причиной появления надстроек является расширяемость Redux? Redux отлично решает проблемы с управлением синхронными данными, но для сайд-эффектов он не столь удобен. Зато есть API для создание middleware — расширения функционала. Эта возможность породила такие замечательные инструменты как redux-thunk, redux-observable, redux-saga (мой выбор). Причем это порождает конкуренцию, одни инструменты лучше других, и вы утверждаете, что это негативная сторона?
Имхо, redux лучшее решение для менеджмента состояния. Ни reflux, ни mobx, ни angular не давали для меня такой уверенности в работе приложении как это делает redux.
Если инструмент не эффективен, зачем он нужен? Ради себя самого?
ИМХО, вопрос не имеет смысла ибо содержит в себе ложную информацию.
Развивая мысль, все ли сегодняшние теории будут в силе через 200 лет?
В том то и дело, что в науке нет отмены уже существующих теорий. Все теории доказанные 200 лет назад актуальны и сейчас и никакое новое открытие не отменило их правоты, а только уточнило. Та же ньютоновская физика это всего лишь частный случай теории относительности, в них нет никакого противоречия.
На самом деле скорость работы приложений на RN разительно отличается от приложений построенных с помощью phonegap/cordova, приближаясь по быстродействию к нативным. Собственно в этом и заключается прелесть данной технологии — использовать для написания мобильных приложений технологии из веба и на выходе получать качественное приложение. Плюсом также можно отнести обилие технологий, которые можно использовать. Redux, reflux, mobx и т.п. для контроля состояний. Можно использовать другие языки, например TypeScript, ClojureScript, CoffeScript если JS не удовлетворяет потребностям.
В целом мне нравится ReactNative и то как он развивается. Уже и microsoft взялись за его поддержку https://github.com/ReactWindows/react-native-windows.
Вы продемонстрировали решение очень простой задачи. Любой маломальски знакомый с веб-разработкой решил бы эту задачу примерно так же. Проблемы ведь появляются при масштабировании :) Чем больше проект, чем больше связанность различных элементов и чем больше интерактивности, тем сложнее становится управлять всем этим в ручную. Именно за этим и появились фреймворки)
Разумеется, для простых вещей, например лэндинг с каким-то уровнем интерактивности спокойно обойдется без сторонних библиотек. В таких задачах совершенно излишне подключать что-то мощное.
Вообще, конечно удачи в изучении языка. Быть увлеченным студентом прекрасно.
P.S. У вас что-то ужасное с форматированием кода. Лучше исправить.
Давайте начнем с начала. Для чего нужен Redux? Для управления состоянием приложения. И надо отметить, что эта задача выполняется очень хорошо. Redux задает четкие правила изменения данных в приложении, вы всегда знаете что именно вызвало изменение состояния. Однонаправленный поток данных, изменение состояние через простые чистые функции, которые легко тестировать. И все это достигается просто из коробки, без дополнительных инструментов. Да, конечно, цена этому некоторый шаблонный код (имена экшенов, экшен-крейторы и т.д.), но это ни «сложно», ни «неэффективно». Скажите, вы действительно на каждый новый компонент создаете новый редюсер, экшен? Не знаю как у вас, но по-моему опыту большая часть компонентов — это глупые компоненты, они просто не требуют тех шагов, что вы описали в своей табличке. Мне кажется, что вы преувеличиваете проблему.
А не думаете, что причиной появления надстроек является расширяемость Redux? Redux отлично решает проблемы с управлением синхронными данными, но для сайд-эффектов он не столь удобен. Зато есть API для создание middleware — расширения функционала. Эта возможность породила такие замечательные инструменты как redux-thunk, redux-observable, redux-saga (мой выбор). Причем это порождает конкуренцию, одни инструменты лучше других, и вы утверждаете, что это негативная сторона?
Имхо, redux лучшее решение для менеджмента состояния. Ни reflux, ни mobx, ни angular не давали для меня такой уверенности в работе приложении как это делает redux.
ИМХО, вопрос не имеет смысла ибо содержит в себе ложную информацию.
В том то и дело, что в науке нет отмены уже существующих теорий. Все теории доказанные 200 лет назад актуальны и сейчас и никакое новое открытие не отменило их правоты, а только уточнило. Та же ньютоновская физика это всего лишь частный случай теории относительности, в них нет никакого противоречия.
В целом мне нравится ReactNative и то как он развивается. Уже и microsoft взялись за его поддержку https://github.com/ReactWindows/react-native-windows.