hbrmdc: суть в том, что есть виртуальный дом. На клиенте это дает быстроту при обновлении реального DOM. А на сервере это позволяет рендерить сайт точно так-же как и на клиенте.
Почему это круто?
Ну, во-первых: если Вы с сервера отдаете пустую страницу, что увидят поисковики? Использовать phantom для рендеринга на серваке? Очень кривое решение, используется, например, для ангуляра.
Во-вторых: пока ваше приложение не загрузилось, пользователь будет видеть белый экран, а если вы на сервере уже все отрендерите - пользователь уже сможет ознакомится с сайтом, пока ваше приложение грузится в фоне.
Каких-то хороших статей я пока не нашел (на англ.), а на русском - тем более. Может сам напишу в скорем). Если интересно, можете посмотреть как сделан react-starter-kit, который я использую, как основу. А насчет безопасности - все равно restAPI используется .. разницы особо никакой.
hbrmdc: неа, я имел ввиду механизм кеширования браузера. Конечно, он ограничен и его размер зависит от настроек (вот например для хрома: chrome://net-internals/#httpCache ), но я сильно сомневаюсь, что в настоящее время у кого кеш в браузере 4кб))) Это же просто место на вашем жестком диске, куда браузер сохраняет результаты часто используемых запросов.
Если правильно проектировать restAPI, то Вы можете использовать этот механизм посылая нужные заголовки ( not modified, например)
Хм. Не понимаю, зачем использовать реакт только для маленьких кусочков кода... ведь вся его суть строится вокруг виртуального DOM, который вы, по сути, не используете.
Попробуйте лучше написать весь вью на реакте, но если уж так хочется (прости господи) используйте местами jq...
spirAde: о, спасибо за пример - так понятнее.
Ну, во-первых, хочу отметить, что когда Вы говорите "полная перезагрузка страницы" - перезагружается только содержимое вью. Сама страница никуда не перезагружается.
Во-вторых: у Вас был пример с "as a child view" и Вы в контроллере получали список продуктов из ... родительского scope - ни в коем случае так не делайте. Получается, что Ваш код зависит от места, где он записан. Сейчас в родительском скоупе был продуктЛист, завтра его нету - уже ошибка.
В-третьих: не забывайте, что у нас может быть переход на продуктс.детаилс не только со страницы со всеми продуктами, но и просто по ссылке "yoursite/products/id" - а в этом случае никакого списка продуктов не будет, даже в предложенном Вами варианте "as a child view".
Я Вам рекомендую под это дело сделать сервис (для продуктов), но учтите, что загрузить один продукт по ссылке "yoursite/products/id" - это нормально. Не стоит этого боятся. Я накидал по-быстрому пример (к сожалению сейчас времени нет) - там примерно показано, как сделать сервис (только лишь как пример, наверное, не стоит 1 в 1 использовать эту идею).
Попробуйте также модуль ngResource - полезная вещь.
Ну и маленькое замечание - имена свойств с большой буквы не стоит писать ;)
spirAde: в принципе - правильно, но у uiRouter есть отличная штука - nested states. Т.е. Вы можете наследовать состояния, при этом дочерние состояния загружаются в шаблон родителя. Обычно есть некое абстрактное состояние (abstract state) в котором есть вьюха для футера, есть вьюха для хедера и вьюха для контента. Далее вы все остальные состояния наследуете от главного. Тогда при переходе по ссылкам на сайте меняться будет только содержимое вьюхи для контента (а футер и хедер останутся прежними).
IceJOKER: Ангуляр - уже хороший фундамент. Остальное - Вы уже сами для себя решите. Если Вы только начали его осваивать и пишите первый раз - придется менять по 100 раз, а как по-другому вы хотели научится ?
might: можно))) Попробуйте какие-нибудь туториалы для начинающих что-ли. Я помню несколько месяцев назад на кодескул был отличный бесплатный курс по ангуляру.
А насчет проблемы с totalPrice - у Вас в одном контроллере объявляется orderList, во втором - к нему же добавляются элементы, причем откуда он в diskShopDescriptionCtrl берется - не понятно (точней - понятно из parent scope). Так не делается - либо через сервис или директивы все сделайте, либо в рамках одного контроллера - либо еще как-нибудь.
might: Вам нужно определить $scope.orderList в Вашем контроллере. Я так понимаю, что он в первый раз должен загружаться из localstorage. Рекомендую сразу сделать сервис для заказов ("OrderService") и поместить всю логику туда.
Насчет ключа - что угодно. Представляйте localstorage как массив ключ-значение.
faragly: если вы переписываете все на ангуляр, тогда и пишите так, как пишут на ангуляре. Рендерьте HTML на клиенте. Если Вам нужно, чтобы какие-то данные с сервера были в форме - сделайте запрос на сервер, или (?) пусть сервер впилит эти данные в index.html как value или const . Потому что для Вашей задачи в ангуляр есть ngModel.