Как организовать большой single page application?

Мне нужно написать клиент для колл центра, аппликация с большим количеством виджетов, таблиц, и тд. Я хочу использовать для нее react, redux, webpack. Но я незнаю как организовать модульность и динамическую загрузку модулей. Я думал о том, чтобы сделать общий layout и через iframe загружать различные виджеты и тд, которые являются отдельными redux аппликациями, а для синхронизации state использовать localstorage, возможно это можно сделать по другому?
  • Вопрос задан
  • 3317 просмотров
Решения вопроса 2
norlin
@norlin
iframe'ы однозначно плохой вариант – скорее всего, огребёте много неожиданных проблем + технологически это явный костыль.
Ajax уже давно можно спокойно использовать в любых браузерах: подгружайте нужные модули, вставляйте в нужные места. Модульность внутри кода обеспечивается CommonJS (requirejs) модулями.
Ответ написан
Посмотрите динамические роутеры: https://github.com/rackt/react-router/blob/latest/...
И динамическую загрузку в webpack https://webpack.github.io/docs/code-splitting.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Roman_Kh
Есть несколько вариантов динамической загрузки модулей.

Например, можно разместить каждый компонент в отдельном файле, но в конце вместо exports вставлять компонент в глобальный скоуп браузера.
var SomeComp = React.createClass({
   ...
})

window.SomeComp = SomeComp

И затем в другом файле вы легко можете сослаться на этот компонент:
...
  render(){
      ...
     <SomeComp ... />
     ...
  }

Правда, при таком подходе придется вручную реализовать динамическую загрузку скриптов. Впрочем, это не очень сложно, да и есть готовые решения.

Но лучше всего воспользоваться webpack loaders. Тем более, что они как раз и созданы для вашей задачи.
Ответ написан
ImLoaD
@ImLoaD
Программист
Почему Вам не использовать Angular?
Ответ написан
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Обратите внимание на Ember.JS, порог вхождения высокий, но оно того стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы