
Alex
09.05.2018
11:04:42
не корректно так говорить

Denis
09.05.2018
11:04:44
На беке жава с микросервисами... Еедпоинтов вагон

Alex
09.05.2018
11:04:47
иногда можно вывести и частично
и параллельно ретраить те что упали

Google

Denis
09.05.2018
11:04:56
В моем случае нет

Alex
09.05.2018
11:05:07
пиши прослойку на ноде

Denis
09.05.2018
11:05:09
Для работы с моделью нужен десяток работающих ендпоинтов

Alex
09.05.2018
11:05:15
которая будет фасадом над микросервисами

Denis
09.05.2018
11:05:22
По этому кейс с половиной рабочих инпутов не рассматриваю

Alex
09.05.2018
11:05:24
и возвращать нужные модели

Denis
09.05.2018
11:05:47
Зачем?
Чтобы клиент в 1 ендпоинт стучал?
Микросервисы и так нужные модели возвращают

Alex
09.05.2018
11:06:38
да, что б дергать 1 ендпоинт
и не тащить на клиент архитектуру бэка
плюс адапторы же будут
такие преобразования дешевле на сервере делать

Google

Denis
09.05.2018
11:07:09
Ну хз, такое себе предложение
Мне удобно иметь возможность рулить порядком запросов

Alex
09.05.2018
11:07:22
так делают в проде многие
в случае с микросервисами

Denis
09.05.2018
11:07:36
Ща покажу портянку
Которая мне не нравится

Alex
09.05.2018
11:08:03
http://caolan.github.io/async/ и вот это для организации запросов с ретраями удобно
еще момент - 1 запрос с клиента vs пачка
на ноде ты потом кеширование тоже можешь сделать


Denis
09.05.2018
11:08:51
const Campaign = {
namespaced: true,
state: {
browsers: [],
deviceTypes: [],
platforms: [],
categories: [],
creatives: [],
countries: [],
usagetypes: []
},
actions: {
loadBrowsers ({ commit }, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/browser'
}).then(response => {
commit('setBrowsers', response.data.slice(0,50));
resolve(response.data);
}).catch(err => reject(err))
});
},
loadDeviceTypes ({commit}, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/device-type',
}).then(response => resolve(commit('setDeviceType', response.data)))
.catch(err => reject(err))
});
},
loadPlatform ({commit}, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/platform',
}).then(response => resolve(commit('setPlatform', response.data)))
.catch(err => reject(err))
});
},
loadCategories ({commit}, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/category',
}).then(response => resolve(commit('setCategories', response.data)))
.catch(err => reject(err))
});
},
loadCreatives ({commit}, campaignId) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/'+campaignId+'/creative',
}).then(response => resolve(commit('setCreatives', response.data)))
.catch(err => reject(err))
});
},
loadCountries ({commit}, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/country',
}).then(response => resolve(commit('setCountries', response.data.map(c => c.name))))
.catch(err => reject(err))
});
},
loadUsageTypes ({commit}, payload) {
return new Promise((resolve, reject) => {
API({
method: 'GET',
url: '/api/campaign/usage-type',
}).then(response => resolve(commit('setUsageTypes', response.data)))
.catch(err => reject(err))
});
}
},
mutations: {
setBrowsers (state, browsers) {
state.browsers = browsers;
},
setDeviceType (state, devicetype) {
state.deviceTypes = devicetype;
},
setPlatform (state, platforms) {
state.platforms = platforms;
},
setCategories (state, category) {
state.categories = category;
},
setCreatives (state, creatives) {
state.creatives = creatives;
},
setCountries (state, countries) {
state.countries = countries;
},
setUsageTypes (state, usagetypes) {
state.usagetypes = usagetypes;
}
},
getters: {
browsers: state => state.browsers,
platforms: state => state.platforms,
deviceTypes: state => state.deviceTypes,
categories: state => state.categories,
countries: state => state.countries,
usagetypes: state => state.usagetypes,
}
}
export default Campaign;


Alex
09.05.2018
11:08:54
если апи поменяется

Rafael
09.05.2018
11:08:57

Alex
09.05.2018
11:08:59
то быстрее поменять на ноде тоже

Denis
09.05.2018
11:09:04
Кусочек портянки)

Alex
09.05.2018
11:09:19
вынеси все запросы для начала в сервис
и оттуда их дергай
передавая callback'и

Rafael
09.05.2018
11:10:05

Denis
09.05.2018
11:10:11
API это инстанс axiosa

Google

Alex
09.05.2018
11:10:24
и?

Denis
09.05.2018
11:10:28
Мне бы это сократить
А ты предлагаешь к портянки ещё портянку

Alex
09.05.2018
11:10:58
import api from './service.js
api.foo(cb, errorCb)
разделяй запросы от логики сторов

Denis
09.05.2018
11:11:45
Это оверхед на мой взгляд

Alex
09.05.2018
11:11:53
ты спросил - я ответил

Denis
09.05.2018
11:12:00
Ну будет сервис файл в котором запросы которые импортируются потом в экшны
Я спросил как укоротить, реально ли

Alex
09.05.2018
11:12:25
убрать все запросы на ноду
и дергать с нее 1 запрос

Rafael
09.05.2018
11:12:48

Denis
09.05.2018
11:12:51
А если мне в разном порядке нужно будет что-то? Или что-то отдельно дёрнуть?

Alex
09.05.2018
11:12:51
это все решения, которые масштабируются удобно

Denis
09.05.2018
11:13:02
Плодить на ноде обретки запросов?

Alex
09.05.2018
11:13:07
яндекс так живет
авито так живут

Artyom
09.05.2018
11:13:18
ребят, подскажите, плз. Есть ли в vue/vue-router'e функция, которая на вход принимает объект и возвращает URL строку с параметрами?

Rafael
09.05.2018
11:13:33

Alex
09.05.2018
11:13:38

Google

Rafael
09.05.2018
11:13:42
А чего они gql не юзают?

Denis
09.05.2018
11:13:43
У меня пока мысль только убрать запросы из стора

Alex
09.05.2018
11:13:48
я маркет уже давно на ноде

Denis
09.05.2018
11:13:52
А сгенерировать модели по сваггер доке
Выглядеть будет красиво

Alex
09.05.2018
11:14:03
xscript помер в свое время - на ноду ушли

Denis
09.05.2018
11:14:12
Ну и считай в сервис (модель) унес запрос

Alex
09.05.2018
11:14:36
написать самому - 5 минут)
тебе с какой целью ?

Rafael
09.05.2018
11:15:01

Alex
09.05.2018
11:15:14
как это в проде крутится

Ivan
09.05.2018
11:15:21

Alex
09.05.2018
11:16:07
там девопс отдел, который уже архитектурой занимается прода
все под замком)

Denis
09.05.2018
11:16:26

Alex
09.05.2018
11:16:34
идея таже самая
микросервисы и фасады

Denis
09.05.2018
11:16:39
Видел из доклад?) "8лет без фреймворков")

Google

Artyom
09.05.2018
11:16:43
написать самому - 5 минут)
да понятно, что легко это и самому сделать, просто зачем дублировать код, когда он уже, возможно, имеется.
Да надо просто урл строку сформировать из определнных параметров

Alex
09.05.2018
11:16:52
вполне себе велосипеды
бизнес доволен
сейчас успешно бэк из монолита разносят как раз на микросервисы

Denis
09.05.2018
11:17:50
У нас вот тоже бек на микросервисы перелезает)

Rafael
09.05.2018
11:17:55

Stanislav
09.05.2018
11:18:31

Artyom
09.05.2018
11:18:44
this.$router.resolve({...router_obj}).href
Спасибо! Натыкался на эту функцию когда гуглил. Только не могу понять, какой объект на вход туда подать? например, я нахожусь на /foo, надо href /boo?xyz=1. Какой объект туда прокинуть?

Ivan
09.05.2018
11:19:29
думаю как то так
{path: '/boo', params:{'xyz':1}}
но вообще зачем, ты же через :to={...obj} это можешь все делать и не писать прямой href в теги

Artyom
09.05.2018
11:21:18

Ivan
09.05.2018
11:21:34
ок, как бизнес скажет)

Khabib
09.05.2018
11:24:57
может кто подсказать по данной статейке https://router.vuejs.org/ru/advanced/meta.html
у меня всегда вываливается в первый else
код один в один, за исключений наименований путей, вместо /foo стоит /brands
ну и 2ое условие убрал
нашел другой пример, спасибо всем ?
каким образом можно менять App?
new Vue({
el: '#app-data',
router: router,
render: h => h(App)
})

Rafael
09.05.2018
11:50:12
new Vue().$mount("#app-data")

Khabib
09.05.2018
12:13:33
извеняюсь, незнаю как правильно задать данный вопрос
допустим у нас есть шаблон (где есть шапка, меню и еще чего, + router-view, который меняется при переходах)
и есть 2ой шаблон (где нет всего того что есть в первом шаблоне, только один инпут)
вот как их можно менять в зависимости от выброного роута