Ответы пользователя по тегу Vue.js
  • Есть ли какая-то методология для создания компонентов во Vue?

    coderisimo
    @coderisimo
    Может вот это : ссыль пригодится ?
    Ответ написан
    Комментировать
  • Страница авторизации для админки на Vue?

    coderisimo
    @coderisimo
    Разумеется ,можно.
    Вы отправляете на сервер логин- пароль, в ответ получаете ,например, токен JWT, которым после подписываете все запросы. Когда токен "протухает" - получаете новый И так далее. Все это можно реализовать на том же axios. В сети есть примеры реализации.
    Есть и другие возможности. Например, если бэк на Yii , при аутентификации на сервере создается сессия, вы получаете куки и CSRF токен, который так-же добавляете в заголовки запросов.

    Авторизацию на клиенте обойти не просто, ибо она по факту не на клиенте , а на сервере ))) Если вы не прошли авторизацию на выполнение каких-либо серверных операций ваши запросы просто будут слаться лесом.
    Ответ написан
    Комментировать
  • Как получить конкретный ключ объекта через vue-multiselect?

    coderisimo
    @coderisimo
    Вот вам простой пример
    Ответ написан
    Комментировать
  • Как обновить http заголовок Axios?

    coderisimo
    @coderisimo
    axios.defaults.headers.common['Auth-Token'] = 'new token';
    Ответ написан
    8 комментариев
  • Как правильно связывать v-model события change компонента input во Vue?

    coderisimo
    @coderisimo

    Внутренне v-model использует разные свойства и генерирует разные события для различных элементов ввода:

    элементы для ввода текста и многострочного текста используют свойство value и событие input;
    чекбоксы и радиокнопки используют свойство checked и событие change;
    выпадающие списки используют свойство value и событие change.
    Ответ написан
  • Как переиспользовать компоненты Vue?

    coderisimo
    @coderisimo
    Компонент геренирует событие, родитель подписывается на него назначая свой обработчик. Таким образом в каждом конкретном случае обработчики могут быть различными и один и тот же компонент становится универсальным. См. пример :
    Ответ написан
    Комментировать
  • Проверка токена?

    coderisimo
    @coderisimo
    Когда вы его получаете - это время его создания. Далее, перед оправкой находите разность между текущим временем и временем его создания.

    А можно и не проверять время жизни токена. Просто если в ответе сервера получили ошибку -
    if (err.response.status === токен экспайред ....
    - получаете новый при помощи рефреш токена.
    Ответ написан
    Комментировать
  • Vue, поиск города в json?

    coderisimo
    @coderisimo
    Например - ТЫЦ
    Посмотрите там Asynchronous select Идея в том, чтобы ничего не грузить заранее, а просто обращаться к серверу, который и будет возвращать набор подходящий под критерии поиска.
    Это стандартная практика. Каждый раз грузить весь JSON , даже если он не нужен смысла нет
    Ответ написан
    Комментировать
  • Как правильно организовать код vue?

    coderisimo
    @coderisimo
    Тоже воевал с такими "кашами". Все же при полном разделении бэка и фронта разработку вести удобнее, и все более логично. Сейчас использую quasar framework (это тоже vue). Yii приложение работает как rest application (отдает только данные, обработка стандартных запросов из коробки), а фронт на quasar. Hot reload webpack и прочие плюшки такого подхода радуют.
    Основная идея : я настроил конфиг вебпака так, что после сборки он выгружает весь код в папку Yii web. Точка входа в одном представлении - app. Оно тоже модифицируется -

    //таким образом в app.php указываются ссылки на  сгенерированные js файлы
       afterBuild() {
            let writeableStream = fs.createWriteStream('../views/site/app.php');
        //......
            fs.createReadStream('../web/index.html').pipe(writeableStream);
          },


    Соответственно, мы получаем обычное Yii. Что радует - при таком подходе сессии, csf токены - все работает как обычно. Только для локальной разработки , когда vue приложение запускается через свой сервер (мы же работаем локально через cli) - приходится получать csf самостоятельно.
    Ответ написан
    7 комментариев
  • Как запретить редактирование первых n символов в input type text на Vue?

    coderisimo
    @coderisimo
    можно сделать просто . общая идея :
    <span class="textbox"> 
            Это неизменяемый  текст
            <input  v-model="message" type="text" name="url" />
        </span>
    Ответ написан
    Комментировать
  • Как правильно в Vue подключать такие сторонние библиотеки / фреймворки?

    coderisimo
    @coderisimo
    А доку смотрели? Для vue есть VueJS plugin.
    ОНА САМАЯ
    Ответ написан
    Комментировать
  • Как работает onMounted в скрытых элементах?

    coderisimo
    @coderisimo
    Потому что display: none не занимает места на странице. Попробуйте - visibility со значением hidden. Тогда элемент будет невидим, но при этом будет иметь размеры.
    Ответ написан
    Комментировать
  • Как правильно настроить прокси для интеграции VUE в существующий проект?

    coderisimo
    @coderisimo Куратор тега JavaScript
    Просто личный опыт.
    На бэкенде создал метод который возвращает токен, метод работает только на локальной машине. Т.е при старте приложения если это DEV, приложение запрашивает токен у сервера.
    5e43ed22f096f708089736.jpeg

    Прокси надо настраивать на бэкенд. Т.е если вы работаете локально то у вас должен присутствовать бэкенд. В моем случае это докер и все запросы я отправляю на 127.0.0.1:8000
    5e43ec8b07a5e913892796.jpeg
    Ответ написан
  • Как настроить навешивание события выбора строки таблицы из bootstrap vue?

    coderisimo
    @coderisimo
    Именно с этим компонентом не работал, но все кажется очевидным.
    К примеру, у вас есть
    onRowSelected(items) {
            this.selected = items
          },

    где вы можете перед this.selected = items фильтровать items (это же массив!) и оставлять в нем только те строки, которые ИМЕЮТ ПРАВО быть выделенными.
    Ответ написан
  • Как заставить Yii2 (PHP) работать с PHPSESSID при локальной разработке с Vue и Webpack?

    coderisimo
    @coderisimo Автор вопроса
    Решение : (надеюсь :) . )

    В процессе билда помещаем готовые папки css,fonts,js,statics в папку web yii. Там же должен присутствовать Yii-шный файл index.php. Содержимое полученного в результате билда index.html помещаем в одно из пустых представлений Yii. Туда же нужно добавить <?= Html::csrfMetaTags() ?> .
    Все вышеописанные операции происходят автоматом в процессе билда и выполняются webpack-ом. Там , вообще можно написать все , что вам угодно. Копирование, добавление кода в файлы И так далее. Представление , которое мы создали открывается при старте нашего приложения.

    После вышеописанных манипуляций в теле странички, где размещается SPA будут присутствовать метатеги с srf :
    <?= Html::csrfMetaTags() ?>
    далее , перед стартом Vue (например в mounted() {.....} ) нужно извлечь csrf из мета тэгов страницы и добавить его в axios.defaults.headers.common

    Это будет работать для приложения , которое работает обычным образом. Версия запущенная через webpack ничего не знает о <?= Html::csrfMetaTags() ?> . Соответственно , пишем экшн getToken, который возвращает нам csrf. Это нужно для разработки, чтобы приложение работало с webpack и его плюшками.
    public function actionGetToken()
        {
            return yii:: $app->getRequest()->getCsrfToken();
        }


    Этот экнш не требует csrf (считается безопасным так , как он GET ). Далее во vue (например в mounted() {.....} ) , в зависимости от ENV при старте приложения берем csrf либо из метатегов , либо вызывав экшн getToken. Это работает, но....
    После того как мы проходим процедуру аутентификации сессия обновляется и старый csrf превращается в тыкву. Так же он обновляется всякий раз, когда мы загружаем новую страничку. В данном случае у нас SPA и многократная загрузка новых станиц нам не грозит.Так что единственное , что еще нужно сделать - сразу после аутентификации обновить csrf токен. Я просто возвращаею его, как результат успешного выполнения login.
    Снова обновляем axios.defaults.headers.common актуальным csrf , и на этом все. Остальные запросы подписанные данным токеном работают нормально.
    Экшн getToken нужен только при локальной разработке и на проде должен быть выключен.
    Ответ написан
  • Проверка JWT авторизации vuejs?

    coderisimo
    @coderisimo
    И попутный вопрос хватит ли авторизации без refresh токена?
    .
    Этот токен не просто так используется.

    1) Вы не заставляете пользователя логиниться каждый раз, когда истечет срок действия основного токена. Токен обновляется без участия пользователя с помощью рефреш токена.
    2) Если у вас сперли токены - ваш рефреш токен становится неактуальным , сайт требует чтобы вы прошли аутентикацию с логином и паролем. После успешного прохождения данной процедуры вам выдается новая пара токен и рефреш токен. Соответственно, похищенный у вас ранее рефреш токен превращается в тыкву. Так что когда обычный токен у злоумышленника протухнет , он не сможет получить новый.
    Ответ написан
    3 комментария
  • Как во Vue игнорироть скобки, кавычки и тд в тексте?

    coderisimo
    @coderisimo Куратор тега JavaScript
    Вообще-то, обычно VUE не пытается все привести к каким-то vue элементам .))). Сделайте песочницу - посмотрим.
    Вот вам пример :
    Ответ написан
    Комментировать
  • Vue.js + flask как организовать?

    coderisimo
    @coderisimo
    C flask дела не имел (но с Larvel или Django для бэкэнда по сути все то же) . Сейчас такие вещи делаются, как два приложения. Вот, как мне кажется неплохой пример.
    перевод полезной статьи

    Здесь не валят все в кучу, а используют бек и фронт раздельно. Что , как раз кошерно ))
    Ответ написан
  • Есть ли у кого-то проблемы с доступностью сайта vuejs.org (и некоторых других) из России?

    coderisimo
    @coderisimo
    Это так. Решается использованием ,например, vpn. Покупаете недорогой VDS на DO - 5$ в мес. Ставите , например, вот это : https://habr.com/ru/post/354632/ . и вдруг, неожиданно, все начинает открываться ! ) Есть и другие решения.
    Ответ написан