
Yaroslav
26.08.2017
11:55:10
походу ему похрен на промис, он не дожидается created..
Давай отделим мухи от котлет. Если ты хочешь использовать vuex тогда asyncData.
Если изоляцию компонента - тогда хук креатед.
Я у себя на проекте с ssr записал следующие
created(){
if (this.someCollections) return
axios.get('http://api.'+this.dom+'/auto/getallauto', {responseType:'json'})
.then(data=>this.someCollections = data)
},
первая строчка нужна что-бы уже на клиенте не стартовать повторно get запрос.
На сервере у меня хук зарезолвился и с сервера пришли данные уже в data.someCollections

Stanislav
26.08.2017
11:56:21

Yaroslav
26.08.2017
11:56:29
Да

Stanislav
26.08.2017
11:57:49
Да
А если запрос за данными подвис - серевер будет ждать и не отдавать html?

Google

Den
26.08.2017
11:58:33

Yaroslav
26.08.2017
11:58:57

Roman
26.08.2017
11:59:58


Yaroslav
26.08.2017
12:00:02
Дэн, не еби мне моцк, ты вообще дупля не режешь в ssr и все эти скрини до жопы иди дальше пропагандируй адонис и пиро и по кругу


Lev
26.08.2017
12:01:14
@Piterden @c01nd01r
- Если писать преобразование ДО vue - то это вроде как не совсем то, какой то внешний код будет заниматься ui, а это дело vue.
- Если писать преобразование в экшенах - то тогда логика отображения компонента размазана по компоненту и по экшену. И при каждом новом компоненте пилим код в экшене. Мало того, каждый экшн думает о всех компонентах. Ну и подход с .vue тоже как то мимо пролетает, было то все в одном.
- Если писать преобразование в компонентах - то вроде бы шикарно. Экшены будут очень простые, даже слишком. Только я вот боюсь вот чего: когда надо отобразить список сущностей. Тогда получается, что есть computed массив, который будет пересоздаваться при изменении источника данных (добавлении данных). И типа перерендедиваться весь список. Но, вроде как vue докучи умный и понимает что этого делать не надо.
Последнее ща проверю

Stanislav
26.08.2017
12:01:43

æ digital
26.08.2017
12:02:05
На днях кто-то из чата давал ссылку на ишью хромиума из за хот модуль оеплейсиент. Дайте ещё раз, там в твиттере Койер и Уес Бос возмущаются почему неактивны стили
Можно хайпу поднять

Igor
26.08.2017
12:02:21

Lev
26.08.2017
12:03:08
tl;dr есть? =)

Yaroslav
26.08.2017
12:03:17

Google

Den
26.08.2017
12:03:31

Roman
26.08.2017
12:04:09
Дожидается
да как раз-таки нет, не дожидается!
сразу после того как created синхронно завершается - сервер отсылает HTML, а там уже на клиенте снова запускается created и там уже сработает твой Promise
а Promise который ты запустаил на сервере в created просто лишняя трата ресурсов, ибо эти данные попросту выбрасываются ?
это легко доказать, просто добать console.log в начале created и перед resolve() в Promise body

Den
26.08.2017
12:04:25

Yaroslav
26.08.2017
12:04:29

Stanislav
26.08.2017
12:04:48

Yaroslav
26.08.2017
12:05:09

Roman
26.08.2017
12:05:56

Yaroslav
26.08.2017
12:06:15

Igor
26.08.2017
12:06:35

Roman
26.08.2017
12:07:00
зачем??
например можно сделать асинхронный запрос и запихать результирующие данные в локальный scope компонента, совсем не трогая глобальный стейт

Yaroslav
26.08.2017
12:07:17
зачем дополнительная сущность?

Roman
26.08.2017
12:07:52
ещё раз: стор и экшоны для работы с глобальным стейтом, а он не всегда нужен, лишь только тогда когда данные делятся меж несколькими компонентами в приложении

Yaroslav
26.08.2017
12:08:11
в прямом

Roman
26.08.2017
12:08:34
если мы говорим об SSR, то асинх данные в created грузить нельзя!!!!

Виталий
26.08.2017
12:09:33
Можно вызывать методы с асинхронными операциями из хуков

Roman
26.08.2017
12:09:38
сервер не дожидается промис из created

Google

Виталий
26.08.2017
12:09:39
Напримет в mounted

Yaroslav
26.08.2017
12:09:42

Stanislav
26.08.2017
12:09:59
так это можно сделать в хуках
в хуках на сервере это не сработает. asyncData выполняется до рендера (об этом в доке написано).
Он нужен, что б до получить данные для ренндера приложения, а потом уже, когда данные получены, начать рендер.
С хуками такое не прокатит

Yaroslav
26.08.2017
12:10:00

Roman
26.08.2017
12:10:00
сервер не дожидается промис из created
дожидается
да ёпп.... Ярик, ты мои сообщения читаешь? ?
да как раз-таки нет, не дожидается!
сразу после того как created синхронно завершается - сервер отсылает HTML, а там уже на клиенте снова запускается created и там уже сработает твой Promise
а Promise который ты запустаил на сервере в created просто лишняя трата ресурсов, ибо эти данные попросту выбрасываются ?
это легко доказать, просто добать console.log в начале created и перед resolve() в Promise body

Stanislav
26.08.2017
12:12:31
Собственно, как то был же спор, где данные на клиенте грузить - потом пришел Илья и сказал, что грузить надо в mounted, ибо в created ломается ssr

Yaroslav
26.08.2017
12:13:03
Моунтед не срабатывает при ssr

Roman
26.08.2017
12:13:03
т.е. 2 проблемы:
1. ты тратишь лишние ресурсы на данные, которые просто выбрасываешь (на сервере).
2. в случае с SSR - Crawler скачает этот HTML с сервера но не выполняет твой Promise в created, ибо он JS не умеет, собственно Crawler не видит контента

Lev
26.08.2017
12:13:57
гг, забанили в react

Yaroslav
26.08.2017
12:14:21

Egoarka
26.08.2017
12:14:29

Stanislav
26.08.2017
12:14:37
Моунтед не срабатывает при ssr
вот именно!
Ситуация такая: Сейчас ты пишешь без ssr, а завтра у тебя появляется ssr. И что б не было проблем, ты пишешь запросы в mounted, ибо они не будут выполняться на сервере в отличии от created

Lev
26.08.2017
12:15:12
Ну там чел че то спросил... я ответил, а потом сказал что на vue с его реактивностью это было бы по проще =) Писоветовал vue. А у них прям совсем подгорело.

Egoarka
26.08.2017
12:15:54
ну так вопрос касался реакта, зачем советовать другой инструмент

Stanislav
26.08.2017
12:16:04
Ну еще бы)))
... используйте vue

Egoarka
26.08.2017
12:16:05
мне бы не понравился такой ответ)

Stanislav
26.08.2017
12:16:10
вот вот

Google

Egoarka
26.08.2017
12:16:25
может у меня проект весь написан на ректе, но не менять же сразу инструмент

Roman
26.08.2017
12:16:47

Lev
26.08.2017
12:17:09
Я просто пошутил, чего беситься то? =)

Yaroslav
26.08.2017
12:17:44

Roman
26.08.2017
12:19:19
ну ёёпт)) Ярослав, я же всё разжевал вроде? "вплодь до последней инструкции процессора" так сказать, что и как происходит

æ digital
26.08.2017
12:20:10

Admin
ERROR: S client not available

Roman
26.08.2017
12:20:39
твоё решение с асинхронными загрузками данных в created это не просто не работает, это просто бред ? т.е. просто лешено смысла

Lev
26.08.2017
12:20:47
что за БЭМ?

Egoarka
26.08.2017
12:21:02
секта яндекса

Igor
26.08.2017
12:21:23

Egoarka
26.08.2017
12:22:11

Roman
26.08.2017
12:22:33
поэтому собственно и существует asyncData


Stanislav
26.08.2017
12:23:34
@Piterden @c01nd01r
- Если писать преобразование ДО vue - то это вроде как не совсем то, какой то внешний код будет заниматься ui, а это дело vue.
- Если писать преобразование в экшенах - то тогда логика отображения компонента размазана по компоненту и по экшену. И при каждом новом компоненте пилим код в экшене. Мало того, каждый экшн думает о всех компонентах. Ну и подход с .vue тоже как то мимо пролетает, было то все в одном.
- Если писать преобразование в компонентах - то вроде бы шикарно. Экшены будут очень простые, даже слишком. Только я вот боюсь вот чего: когда надо отобразить список сущностей. Тогда получается, что есть computed массив, который будет пересоздаваться при изменении источника данных (добавлении данных). И типа перерендедиваться весь список. Но, вроде как vue докучи умный и понимает что этого делать не надо.
Последнее ща проверю
По первому пункту.
У тебя есть какая-то файлик api.js. В нем описаны функции для запроса к сервису. Тут нет никакого UI.
В экшине или компоненте ты делаешь import getUser from '../api.js' и вызываешь getUser(id).
Вся магия по обработке данных проиходит в этом getUser. В итоге в стору/стейт компонента у тебя приходят красивые обработанные данные, готовые для рендеринга.
В итоге Vue не знает про http, а транспортный слой не знает Vue.


Roman
26.08.2017
12:23:40
однако вопрос "как асинх. данные в компонентах (не-раутер-компонентах) грузить на серваке" этим не решается..

Stanislav
26.08.2017
12:23:55
/banned æ digital
?

Lev
26.08.2017
12:25:19

Google

æ digital
26.08.2017
12:25:44

Stanislav
26.08.2017
12:26:03

Lev
26.08.2017
12:26:39

Stanislav
26.08.2017
12:27:17

Lev
26.08.2017
12:30:50

Гийденко
26.08.2017
12:35:24
Приветы. Есть небольшая работа, куда об это можно написать? В этом чате можно?

Stanislav
26.08.2017
12:37:17

Lev
26.08.2017
12:38:08

Stanislav
26.08.2017
12:38:19
?

Roman
26.08.2017
12:43:29
бинарная эмуляция монолита?
бинокль Эрнеста Масловича?
банановый экстракт мороженного?

Den
26.08.2017
12:45:47

Egoarka
26.08.2017
12:47:18
БЭМ?))
https://seeklogo.com/images/B/bmw-logo-248C3D90E6-seeklogo.com.png

Гийденко
26.08.2017
12:47:38