
Stas
31.05.2018
19:50:35

Женя
31.05.2018
20:54:39
Ребят, кто-нибудь сталкивался с таким?
Короче, микрочелик собирает шаблон на пхп (вордпресс), формирует данные в виде джейсонов и вставляет их в прупсы компонентов.
Страта рабочая?

Google

Victor
31.05.2018
20:58:34
жуть

Denis
31.05.2018
20:58:44
мощно

Женя
31.05.2018
20:59:33
я изучу подробнее эту систему

Denis
31.05.2018
20:59:35
Разделить пыху и vue видимо не догадался..

Женя
31.05.2018
20:59:40
устрою курс бест практикс

Victor
31.05.2018
21:00:13
по-хорошему, в WP версии от 4.7 и выше есть REST API
так что вполне можно Vue фронт сделать нормально

Женя
31.05.2018
21:02:17
да, но он не знал про это и свои апишки написал

Леха
31.05.2018
21:23:12

Женя
31.05.2018
21:24:15

Леха
31.05.2018
21:24:38

Женя
31.05.2018
21:25:20
Нет ?
Извините, я предположил такое исходя из вашей реакции на новые для вас сокращения

Леха
31.05.2018
21:30:17
Все норм, я просто ворчун ?

Google

Vlad
31.05.2018
21:53:46
Если просто нужно метки поставить то пойдёт , что то сложнее - сам пиши


Victor
01.06.2018
04:55:25
Привет, товарищи.
Использую Vuex, но дополнительно применил EventBus для отслеживания протухания токенов, насколько это плохо и как сделать правильно?
Суть в следующем. В SPA реализовал авторизацию по двум токенам jwt:
- accessToken - для авторизации во всех запросах к API, живёт час;
- refreshToken - для получения нового accessToken, живёт сутки.
1) username, password => POST /api/v0.1/auth/login => accessToken, refreshToken
2) в мутациях токены сохраняются в state, при этом творится такое безобразие:
setAccessToken (state, { accessToken }) {
state.jwt.accessToken = accessToken
setTimeout( ( ) => { EventBus.$emit('accessTokenExpired') },
getTimeout(accessToken) - 1000 )
}
3) в App.vue слушаю accessTokenExpired:
mounted ( ) {
EventBus.$on('accessTokenExpired', ( ) => {
this.$store.dispatch('auth/refreshAccessToken')
})
...
4) и в action refreshAccessToken запрашиваю новый accessToken, далее - снова п. 2.
5) Для проверки аутентифицирован ли пользователь есть:
const getters = {
isAuthenticated: state => isValidJwt(state.jwt.accessToken),
...
}
В App.vue в watch отслеживается и isAuthenticated и при false происходит роут на /login.
В такой схеме accessToken обновляется до того, как протухнет, а после протухания refreshToken пользователь должен снова залогиниться.
Как избавиться от хака с setTimeout и EventBus и сделать это грамотно?
Кто-то может сказать, как это сделать лучше, или поделиться репозиторием?


Pasha
01.06.2018
05:19:57
Какой-нибудь axios.interceptors

Victor
01.06.2018
05:29:59
Какой-нибудь axios.interceptors
А чисто на Vue + Vuex, вне зависимости от попыток обращений к API?
Мы итак знаем, когда истечёт токен, нужно обновлять его или разлогинить пользователя, когда refreshToken просрочен.

Denis
01.06.2018
05:44:50
А как вы хотите отсчитывать время без использования setTimeout?

Victor
01.06.2018
05:45:17

Denis
01.06.2018
05:45:45
А как вы узнаете, что он протух? Тут либо таймаут задавать по времени, либо дергать по setInterval периаодически и проверять

Victor
01.06.2018
05:46:03
Можно же отслеживать isAuthenticated

Denis
01.06.2018
05:46:52
А как он у вас поменяется?

Victor
01.06.2018
05:47:33

Denis
01.06.2018
05:47:43
Ну иначе вотчер не среагирует

Victor
01.06.2018
05:48:57
Правильно я понимаю, что можно оставить setTimeout и в нём дергать мутацию?

Denis
01.06.2018
05:49:04
Я правильно понимаю, что вы хотите отслеживать изменение переменной, которая должна каким-то образом без периодических проверок и таймаутов сама узнать, что должна измениться?

Victor
01.06.2018
05:49:06
Без шины событий?

Denis
01.06.2018
05:49:37
Во Vuex есть actions, которые как раз созданы для асинхронного изменения стейта

Victor
01.06.2018
05:50:58

Denis
01.06.2018
05:53:01
А, я понял. Вы от шины хотите избавиться и реализовать то же самое чисто на Vuex?
Вас не таймаут смущает))

Google

Victor
01.06.2018
05:54:43
А в мутациях нельзя/не принято дёргать действия?

Denis
01.06.2018
05:56:11
Ну так просто сделайте setAccessToken экшеном
В нем в таймауте дергайте мутацию
А в приложении подпишитесь на поле стейта, которое меняется
А когда поменяется, опять дергайте мутацию. Все то же самое, что у вас сейчас, просто без шины

Kazakbala
01.06.2018
05:57:34
computed переменную можно использолвать в другой computed переменной (обработать)
если да, то как достучаться до них?

Victor
01.06.2018
05:57:50

Denis
01.06.2018
05:57:57

Kazakbala
01.06.2018
05:58:21

Victor
01.06.2018
05:58:37

Kazakbala
01.06.2018
05:58:47
спасибо

Denis
01.06.2018
05:59:06

Kazakbala
01.06.2018
06:00:03

Amir
01.06.2018
06:35:02
Люди подскажите
VUEX
Вобщем что-то не сообразю как порядок экшненов сделать
Вобщем у меня такая логика
При загрузке приложения, запускается определенный экш
который заполняет поля в VUEX state, скажем actionInit
последом, в зависимости какой action выбран запускается другой actionServices например, у которого данные конечно зависят от actionInit
Коллизия происходит когда пользователь скажем в браузере нажал F5 Обновить
в этом случае почему то actionInit запускается позже
actioninit забинден в компоненте account.vue on mounted
actionServices забинден в компоненте servcies.vue on mounted
И все это завернуто в vue-router


Almaz
01.06.2018
06:38:56
к каким негативным последствиям может привести такая схема использования?
<div id="vue-app">
<subscription-state></subscription-state>
<div id="vue-admin">
<moderation></moderation>
</div>
<script src="/Scripts/bundle/vue-admin.js"></script>
</div>
<script src="/Scripts/bundle/vue-app.js"></script>
пока что только в коносле ошибка, что внутри div vue-app тег script
но на работоспособность в целом никак не влияет

Amir
01.06.2018
06:40:59
ты нарушаешь фэн-шуй

Google

Amir
01.06.2018
06:41:29
заставляешь вью онанизмом заниматься

Almaz
01.06.2018
06:42:06
это что бы не пихать компоненты админки в один js с компонентами из шапки

Amir
01.06.2018
06:42:28
ну а паки для чего

Almaz
01.06.2018
06:42:52
это что?

Amir
01.06.2018
06:44:09
а ниче, я вопроса твоего не понял :)

Almaz
01.06.2018
06:47:13
Есть шапка которая используется на всех страницах сайта, и есть, допустим, страница админки. Чтобы js шапки не был громоздким, делаю отдельный js для админки

Admin
ERROR: S client not available

Amir
01.06.2018
06:49:00
может срипт вынеси вне 1 блока да и все

Denis
01.06.2018
07:15:33
А есть какие-то проблемы с тем, чтобы скрипт админки притащить динамическим импортом внутри приложения?
Нафига в разметку-то тащить?

Игорь
01.06.2018
07:47:19
Судари, пытаюсь в store.js импортировать модуль из соседней папки, но получаю ошибку. В чем дело?

Andrey
01.06.2018
07:48:41
../

Игорь
01.06.2018
07:49:09
бля опять объебос на сраных путях)
хотя не
и самое главное

Andrey
01.06.2018
07:53:58
если const

Google

Andrey
01.06.2018
07:54:07
делай дестракцию
import {Auth...} from ...

Владимир Калинин
01.06.2018
07:55:21
ругается же на vue/types/index

Andrey
01.06.2018
07:56:14
ну правильно в индекве не находит то что ты там ищещь

Владимир Калинин
01.06.2018
07:56:43
да и вообще кажется ты в js пытаешься импортнуть ts

Andrey
01.06.2018
07:56:54
кароче пиши import {AuthModule} from './Modules/Auth'

Владимир Калинин
01.06.2018
07:56:57
вебпак ищет vue/types/index.js и не надохит

Andrey
01.06.2018
07:57:45
если один тогда объявляй как один
не export const
a export default

Владимир Калинин
01.06.2018
07:58:23
так вот же, так и есть
и этот импорт у него проходит
а ругается на попытку на който фиг index.ts импортнуть

Дмитрий Maestro
01.06.2018
08:02:14
ребят подскажите пожалуйста можно ли по эвенту с одного компонента опрашивать другие компоненты ?
есть три компонента
и есть родительский
один из компонентов бросает евент
можно ли как то два других дочерних опросить на предмет поменялось ли там что то ?