два года мне хватало cms, сейчас это modx, но теперь я хочу использовать библиотеку react js, и вообще изучить, как работает архитектура mvc и flux.
1. Самый практический вопрос. Я не могу понять, будет ли толк, если я напишу шаблон на реакте и в компоненты буду втыкать сниппеты и чанки. Ведь страницу то формирует сам modx?
Я чувствую, что мне не известна какая-то очевидная для всех технология - у меня нет технического образования, так что это вполне возможно.
вот как я понимаю: react js имеет высокий performance за счет того, что рендерит не всю страницу заново каждый раз, а только отдельные "components".
2. А если страница целиком перезагружается, то что происходит? толк от реакта есть в этом случае?
Еще я, вроде, понимаю, что значит "react - это visual компонент в арзитектуре mvc"
3. но тогда не понятно, как тут архитектура flux задействована? это же альтернатива mvc, не так ли? В документации react.js я, к сожалению не нашел ответ на этот вопрос.
В общем, уважаемые специалисты, я чувствую, что мои познания в этой сфере как пазл, в котором не хватает какого-то большого куска, или кусков.
4. Что мне нужно изучить, чтобы восполнить эти пробелы и стать способным применять на практике знание react js? Англоязычные источники информации подойдут тоже. Формат преимущественно - видео.
1. Грубо-говоря есть 1 страница в которую данные приходят по REST интерфейсу с ModX и он не участвует, непосредственно, в рендере. Сам по себе реакт рендерит страничку по кусочкам(компонентам), но вот внутри нет хорошего механизма для проверки нужно ли менять эти кусочки в DOM дереве - есть PureRenderMixin, но часто нужно городить руками.
2. Нет эта страница не должна перегружаться и от реакта в таком случае толку 0. Реакт - это шаблонизатор в MVC, он не занимается работой с моделью и в нём нет бизнес-логики.
3. Flux - это православный CQRS-ES, и непосредственно к modx отношения не имеет. Полноценной реализации этого паттерна, по всем канонам и с SOA, сейчас нет. Так что не стоит заморачиваться. Для работы с подобными вещами РНР / Python / Ruby довольно плохо подходят, так как там нужна асинхронность / многопоточность прямо с коробки, и без костылей типа gearmand или celery.
4. Надо ковыряться в самом реакте - там много недочётов и недоделок, но сейчас это наиболее полноценное и типобезопасное решение для рендеринга посредством VirtualDOM.
Благодарю вас, Юрий,
итак, reactjs с modx нет смысла увязывать. Тогда что мне нужно изучить, чтобы полноценный динамичный сайт сделать с react'ом? Посоветуйте, пожалуйста, конкретный php фреймворк и прочие основные составляющие. Критерий выбора - чем проще освоить будет - тем лучше.
В принципе покатит любой фреймворк и REST интерфейс на нём. Так как я перепробовал все существующие распространённые решения, могу с уверенностью сказать что удобнее всего REST интерфейсы реализовывать в Django с tastypie, по крайней мере я ничего удобнее пока не видел.
По поводу flux'a - покатит Play2 с akka, покатит grails, покатит golang, покатит express / sails. Там нужна "реактивность" коих нет в существующих РНР решениях, но она может быть появится в РНР7. www.reactivemanifesto.org
а может попробовать baas? что-то вроде Moltin? я смотрел как-то небольшой tutorial по этому сервису - там на ангуляре писали фронтенд интернет-магазина, а общение, вроде как, шло именно через json.
hbrmdc: на самом деле недостатков довольно много
1. Увеличение скорости отклика продукта - влияние на SEO, и общую скорость сервиса.
2. Вы не можете правильно контролировать риски - вы не можете сказать когда и что у провайдеров отвалится.
3. Вы не можете давать гарантию что все ваши сервисы будут масштабированы правильно - что горизонтально, что вертикально.
baas это как и облака - пока нагрузки и оборота нет, может быть и целесообразно, а как только нагрузка появляется - расходы растут в геометрической прогрессии.
1. Гугол индексирует сайты с JS шаблонизацией раз в двое суток, при этом учитывается скорость рендеринга страницы, подгрузки ресурсов и прочего барахла: наличие асинхронной подгрузки ресурсов, упаковка, кэширование DNS, и т.п. Предположим что мы просто хостим html странички собранные каким-то gulp'ом и радуемся жизни. По любому ещё надо использовать какой-то prerender.io в виде стороннего сервиса который явно испоганит стату по PageRank'у. В случае с react'ом проще - можно гонять рендер напрямую в express'е под node.js / io.js без особого шаманизма.
2. Там риски связаны не только со стабильностью работы но и с вытоком информации, так как вы добавляете ещё одно звено.
3. Вы не знаете как в том же baas'е происходит масштабирование и у вас нет гарантий что при перепадах нагрузки у целевого провайдера у вас не начнутся глюки из-за кривизны чьего-то мозга или рук.