Что сочитать с ReactJS чтобы собрать из него аналог AngularJS?
Когда узнал что ReactJS, это не аналог angularjs не очень-то и расстроился.
Но сейчас, после прочтения кучи статей, я начал собирать среду и первым
что меня испугало - нет поддержки ts у текущей версии. Но это ладно, можно
заменить babel от которого меня отпугивает только отсутствия свойств уровня класса.
Не красиво, когда все в конструкторе, вид как у индюка на кислородном баллоне.
Но это к делу не относится. Мне посоветовали использовать redux, но комментарии
меня немного разочаровали и я присмотрелся к reflux, который позиционируется,
как младший и усовершенствованный брат flux собранный командой faceboock.
И получилось так что клиентский боекомплект собран, но нет понимания роутинга.
С AngularJS я не задумывался вообще не о чем. А тут получилось что с роутингом и
всякими хистори и прочем пробел.
Что можете посоветовать из проверенного и как вообще быть?
Никита Гущин: я не говорю что мне он не понравился. Просто я сначала прочел о reflux и все что было написано, понял. Ещё в коментах не было пошлятины и все соответствовало желаемому. А вот прежде чем читать о reduxe я решил почитать коменты и оказалось что в нескольких из всех, то есть почти во всех, присутствует нотка, говорящая что это не совсем правильное решение. Да еще reflux это от создателей того же react, что сыграло не малую роль. Они же должны были сделать работу над ошибками и воплотили это в виде reflux. Плюс у него нет жестких зависимостей. Например у него реализованы промисы, но их можно заменить на родные одной строчкой кода.
Для ViewModel вполне подходит. Чья-то реализация Model (не знаю реализована ли она как-то в reduxe) мне не нужна. Вот так приблизительно.. а там дальше будет видно. Но по сути мне осталось только роутер, который Вы посоветовали, спасибо. И с хистори ещё пробел.
vasIvas: cs625527.vk.me/v625527783/4c6a5/nsa1fHpOMQc.jpg вот что 10 минут назад писали о рефлюксе) "not reflux. reflux almost encourages antipatterns, and requires you add some boilerplate to do things in a way that won't cause problems in the future"
Когда узнал что ReactJS, это не аналог angularjs не очень-то и расстроился.
Вам бессовестно соврали, там различия конечно есть, особенно в части отслеживания изменений и т.д. но они не настолько кординальные. В общем и целом один и тот же подход может быть реализован и там и там.
Никаких пробелов. Для ангуляра к слову такая же примерно штука есть, официальная замена всяким там uiRouter-ам.
С AngularJS я не задумывался вообще не о чем
Это главная проблема angular, люди не думают что делают....
p.s. Реакт в отличии от ангуляра это библиотека. Flux - тоже можно назвать библиотекой. Ангуляр (если мы берем 1.x ветку) - монолитный фреймворк. Вот и вся разница. С реактом вы берете только то что вам нужно.
ts не для актуальной версии. Для 0.14.0 нет.
А вот по поводу "официальная замена всяким там uiRouter-ам", ведь офф замена, если я не ошибаюсь, хуже? И тогда получается что Ваша ссылка на худшею реализацию, а есть лучшая?
А Flux и Reflux, это наверное библиотека выполняющая роль посредника между моделью и представлением - ViewModel. При чем второй по описанию кажется удобней и перспективней.
vasIvas: что значит "сайтовые дела" ? В реакт-роутере все что надо есть)
А вот вопроса про babel не понял. babel отдельно, react отдельно. Берете самый свежий babel и все должно работать. А подсветка синтаксиса - это уже вопрос к IDE. У меня WebStorm все подсвечивает (кроме ES7)
Никита Гущин: давно хочу спросить и вот он знаменательный момент - у меня phpstorm у которого нет шаблонов создания frontend проектов. Где взять, куда установить?
Александр Таратин: цвет действительно замечательный, но у меня phpstorm и нет возможности поменять только цвет синтаксиса, как например в sublime. А смену фонового цвета я не хочу.
Сергей Протько: я не в подсветке разобраться не могу, а в redux и reflux :) Не хочу обидеть помогающих, но такое ощущение, что вэб программисты не любят и не понимают событий и для них redux и reflux что-то не очень простое. По этому я не могу из них вытянуть того что мне нужно понять. Вот такое чувство, что redux и reflux, это самый обычный контроллер, но почему-то все об этом молчат.
vasIvas: события это плохо, и давайте не будет начинать холивар. Для игрушек и там где состояние системы можем меняться асинхронно много раз в секунду события хорошо, для приложений события это не так удобно и разработчики предпочитают явный поток данных в одну сторону.
Такое чувство что это вообще чья-то шутка. "Создатели facebook придумали новый паттерн flux, который подписан на события представления, получает данные и передает их в модель. А модель потом шлет события представлению, чтобы представление забрало их из модели". Это шутка? Я вроде первый свой спор о mvc начал именно с такой концепции и ярый её сторонник. И не facebook её придумали, а придумали её сорок лет назад и на as3 так минимум с 2007 года пишут. Вообще мозг выносит этот реакт..
vasIvas: это называется "маркетинг". Вообще то что вы описали это классическое MVC, где вью и модель связано обзервабл связью (не совсем события в контексте реакта, в ангуляре эту задачу обрабатывают байндинги, за реакт говорить не берусь). И да, этой штуке уже 35 лет.
Сергей Протько: вот ссылка в которой описан подход "революционный" подход "придуманный facebook - habrahabr.ru/post/249279 чтения на пять минут. и я ошибся, это не они придумали, это они так событийную модель назвали. Если точнее, то -
Flux — это термин, придуманный для обозначения однонаправленного потока данных с очень специфичными событиями и слушателями.
vasIvas: я не читаю всякий пиар-бред. Ангуляр как по мне намного больше революционных идей нес на момент своего появления. Сейчас реакт идеологически более правильная концепция, но angular2 должен это дело уровнять.
vasIvas: я не разбирался как работает реакт изунтри, но судя по всему так оно и есть, просто события хэндлит почти целиком сам ракт, делая работу с данными более прозрачной. По аналогии с байндингами в ангуляре - это тоже обзервер шаблон но трекает он изменения данных через дерти чекинг.
Я хотел было написать что в reflux есть диспатчер и даже есть возможность, но потом вновь пробежал статью и вот что -
Диспетчера событий (dispatcher), который в Flux был синглтоном, в RefluxJS нет. Вместо этого каждое событие (экшен) является своим собственным диспетчером.
И теперь я понимаю, что я так быстро читал, что в моем сознании сложилось мнение что "вместо синглтона теперь все пасибо всем кто участвовал в склонении меня в сторону redux. Сейчас о нем почитаю. Но если не сложно, то очень коротко, что этот redux делает?
vasIvas: Если коротко: flux изначально делали для клинской части и для сервера он не предназначен, redux может где угодно работать, в редукс очень легко сдлеать историю событий и шагать по дейсвиям, отменять и повторять их, это позволяет сделать горячую перезагрузку кода без потери текущих введеных данных, то есть допустим мы что-то тестируем и ввели данные в список дел, нашли баг, исправил и наши данные не куда не делись, это очень удобно при отладке, и насколько знаю есть только в redux, так же там есть redux-dev-tools небольшая панель которая показывается в режиме отладке позволяющая в 1 клик отменить любое действие или посмотреть состояния компонентов. в redux то же нет диспетчера, но и сам redux не говорит что это flux, некоторые разработчики оригинального flux написали в своем твитере что им очень понравился redux. И естесвенно это все лучше использовать вместе с webpack.
OneFive: как нет деспатчера? А как же события существуют без деспатчера? Стоп. Вот сейчас я вспомнил настоящие мысли на момент прочтения статьи. Пойду ещё раз пробегу, чтобы подтвердить.
OneFive: Вы производите впечатление понимающего пользователя reactjs. скажите - что вообще делает этот reflux и redux? Я понял так. У меня есть reflux который слушает события от представления. Вот он получил события и передал данные от переданные с этим событием в модель, которую создаю ведь я? Ведь reflux и redux не имеют своих моделей клиентских? Вот и следующий момент, что они reflux и redux делают после, как они обновляют представление?
Я это к чему спрашиваю. Я просто уже целый вечер потратил, а чувство такое, что сам бы сделал за несколько минут. Ведь суть в том, чтобы представление передавало данные вместе с событием "куда-то". Это "куда-то" "что-то" делало с этими данными и по окончанию посылало событие "change" этому представлению. Точнее посылает событие не сам этот "куда-то", а "куда-то" инициирует вызов события в том объекте на который подписано то представление, которое все и начало. Ведь на этом работа reflux и redux заканчивается?
vasIvas: Вместо моделей используются состояния которые содержат данные. Можно все это сделать и самому, но тогда могут быть проблемы с архитектурой и интегрированием в уже готовые для redux,reflux модулей, например панель отладки для redux, система отмены состояний, горячая замена. Если пропустить настройки redux то что-бы нам сделать приложение на нём нужно добавить файл actionTypes с константами экшенов, файл *action где будет указано соответствие экшенов с редусерами и файл сам редусер, не так много и не так сложно. В будущем когда придет новый человек он будет уже знать redux или научится по докам, а с самописным решением будут проблемы.