Vladimir
Аа, я тоже просто )
Farid
Куда можно задать вопросы в общем по фронту?
Алексей
Сюда тоже можно я думаю
Alexey
Куда можно задать вопросы в общем по фронту?
есть еще чат по вёрстке https://t.me/web_structure и по js https://t.me/js_ru
Задорный Копатыч
Мне нужна вот такая штука в модельке.
Задорный Копатыч
<tr> <td><textarea></textarea></td> <td><select><option value="0">0</option><option value="1">1</option></select></td> </tr>
Задорный Копатыч
Естественно, их может быть n раз, управление должно быть и текстом и селектом. Селекты могут иметь разные наборы значений.
Anonymous
покажьіте что сделали
Задорный Копатыч
Да собственно ничего.
Задорный Копатыч
Я по туторам изучаю VUE. И вот столкнулся с непониманием подхода. Как сделать для for такое вот перечисление tr-строк таблицы, в которых внутри есть свои элементы для модели
Alex
Добавляете v-for на <tr> и он нагенерирует разметки что будет внутри на массив данных
Alex
Вместо туторов для начала документацию на русском почитайте, там тоже множество простых примеров
Vladimir
Ребят, как во вью роутере редиректнуться назад ?
Vladimir
спасибо)
Задорный Копатыч
У меня непонятки именно во встраивании доп.селектов и текстарей внутри фора
Anton
Всем привет. надо подскажите простенький плеер на vue? нужен виджет для прослушки записи разговоров
Bushrut
гайз как разбить массив для реализации пагинации ?
Alex
.filter
Albert
https://lodash.com/docs/4.17.4#chunk
Anonymous
Привет. Подскажите, я правильно понимаю, что во veux геттеры это аналог mapStateToProps?
Michael
и я))))
Michael
Аа, я тоже просто )
Uncle
Человеки! Новичков не сильно пинаете? :) Как вы делаете проверку сессии, когда приложение загружается? Наример: есть простая html страница с логином-паролем, проверяем через ajax запрос их правильность, создаём кукиш перенаправляем на приложение.
Rem1te
а как правильно?
Да вот всякие токены понапридумывали, почитайте например за jwt
Uncle
Да вот всякие токены понапридумывали, почитайте например за jwt
спасибо! Но всетаки как до рендеринга что-то сделать?
Rem1te
спасибо! Но всетаки как до рендеринга что-то сделать?
Смотря что Вас интересует сделать, например можно подписать все запросы каким-то заголовком и сервера по заголовкам будет Вам что не будь делать
Rafael 🌵
говорят что юзать сессии для СПА плохой тон
Но ведь jwt это почти та же сессия
Rem1te
Но ведь jwt это почти та же сессия
Ну да, а кто спорит та ?
Rafael 🌵
Ну да, а кто спорит та ?
Да никто, но вот он сейчас начнёт все на jwt переделывать
Rafael 🌵
Андрей
а что в vue нельзя сделать чтоб при нажатии одной и тойже ссылки был релоад как это было в первом ангуляре указывая reload: true ?
Rafael 🌵
Uncle
Смотря что Вас интересует сделать, например можно подписать все запросы каким-то заголовком и сервера по заголовкам будет Вам что не будь делать
Хочется при загрузке, но до рендеринга. Всеравно хоть сессию, хоть jwt надо как-то где-то проверять.
Uncle
Так вот как вы это делаете? :)
Anton
спасибо! Но всетаки как до рендеринга что-то сделать?
У меня бэк фласк, после аунтификации по аякс отдает jwt, у jwt стоит срок протухания, когда клиент делает действия связанные с работой сервера он в шапке отдает ключ, если сервер возвращает ошибку, роутер перенаправит на логин. Держать и там и там нет смысла, так как ключ будет иметь уже все данные плюс данные о сроке действия, можешь делать два ключа один рефреш один активационный. С помощью рефреш обновляешь способность активационного.
Anton
простой пример
Anton
created: function(){ let data = localStorage.getItem('at'); console.log(null); this.active = data !== null; }, methods: { get_toke (){ Vue.http.post('/login','{"username":"test","password":"test"}', {headers:{'X-CSRFToken':csr}}).then(response =>{ return response.json() }).then(result=>{ localStorage.setItem('at',"Bearer "+ result['a_t']); localStorage.setItem('rt',"Bearer "+ result['r_t']); this.active = true }); }, get_data (){ let data = localStorage.getItem('at'); if (data !== null) { Vue.http.get('/protected', {headers: {'Authorization': data}}) .then(response => { return response.json() }) .then(result => { if (result['status'] === 401) { this.active = false; localStorage.removeItem('at'); return } this.mes = result['current_user'] }) }}, refresh (){ Vue.http.post('/refresh','', {headers:{'X-CSRFToken':csr, 'Authorization':localStorage.getItem('rt')}}).then(response =>{ return response.json() }).then(result=>{ console.log(result); if (result['status'] === 401) { this.active = false; localStorage.removeItem('at'); localStorage.removeItem('rt'); return } localStorage.setItem('at',"Bearer "+ result['a_t']); this.active = true }).catch(error => console.log(error));
Anton
На бэке у тебя должен быть мидлваре который будет проверять входящий jwt
Alexey
created: function(){ let data = localStorage.getItem('at'); console.log(null); this.active = data !== null; }, methods: { get_toke (){ Vue.http.post('/login','{"username":"test","password":"test"}', {headers:{'X-CSRFToken':csr}}).then(response =>{ return response.json() }).then(result=>{ localStorage.setItem('at',"Bearer "+ result['a_t']); localStorage.setItem('rt',"Bearer "+ result['r_t']); this.active = true }); }, get_data (){ let data = localStorage.getItem('at'); if (data !== null) { Vue.http.get('/protected', {headers: {'Authorization': data}}) .then(response => { return response.json() }) .then(result => { if (result['status'] === 401) { this.active = false; localStorage.removeItem('at'); return } this.mes = result['current_user'] }) }}, refresh (){ Vue.http.post('/refresh','', {headers:{'X-CSRFToken':csr, 'Authorization':localStorage.getItem('rt')}}).then(response =>{ return response.json() }).then(result=>{ console.log(result); if (result['status'] === 401) { this.active = false; localStorage.removeItem('at'); localStorage.removeItem('rt'); return } localStorage.setItem('at',"Bearer "+ result['a_t']); this.active = true }).catch(error => console.log(error));
А еще не стоит так отправлять http-запросы
Alexey
Используйте axios
Alexey
там к тому же вам логику перевыпуска токена, если будете на REST (jwt, oauth2...) делать удобнее будет значительно
Alexey
с помощью интерцепторов
Alexey
ну и вообще есть мнение что не стоит в prototype вью пихать http-клиент
Alexey
это так, мимопроходил совет
Uncle
Используйте axios
ААААА!!! Я так никогда себе современный фронт не сделаю! :)
Alexey
Почему же?)
Uncle
Почему же?)
Ну как почему: делать на jQuery - отцтой. Webpack - необходимость, ещё нужно вот библиотеку к библиотеке. А ещё: ты без Vuex сделал?! Ну ты ... И т.д. чего я ещё не знаю :)
Alexey
А делать на jquery не отстой. Просто в случае большого приложения необходимость обновлять DOM вручную быстро превращает фронт в ад. Проще и удобнее иметь четкую модель данных, обновляя которую будет перерендериваться DOM
Alexey
А если проект крохотный
Alexey
И сложной логики в нем нет. То jquery - норм
Anton
угу. Легче не становится.
Совет, не пытайся весь фулстек технологии запихнуть к себе, сначала используй что-то, заверши проект, в новый проект интегрируй еще что-то, и т.д. Я бэкэндер, для меня фронт кажется еще менее привлекательным чем ты думаешь)
Alexey
Вот с этим согласен на 146%. Пробовал уже.
По поводу стека. VueJS + Vuex + axios + webpack для сборки. Нормально выйдет. И молодежно и удобно. Инфа сотка
Uncle
По поводу стека. VueJS + Vuex + axios + webpack для сборки. Нормально выйдет. И молодежно и удобно. Инфа сотка
👍 Тут Vue со скрипом идёт, а уж если всё сразу, то голова лопнет :) Но что всё перечисленное нужно полностью согласен.
Павел
парни, подскажите. надо чтобы при изменении переменной хранилища в одном компоненте в другом выполнялось действие, как это сделать?
Павел
дак вот не работает
Павел
у меня карта, мне надо чтобы маркеры перерисовывались, когда сокет получил данные
Павел
соответственно компонент с сокетами, карта и хранилище
Павел
leaflet
Павел
есть у кого идеи?
Алексей
Стейт карты запихнуть в стор, и следить за ним из двух компонентов
Victor
Смотря в каких отношениях у тебя эти компоненты
Павел
надо что-то типа того, что я описал :(