@vuejs_ru
Vue.js — русскоговорящее сообщество

Общаемся на темы, посвященные Vue.js и опыту его использования. Проблемы. Новости. Решения. См. также: @js_ru, @react_js, @angular_ru, @nuxtjs_ru Вакансии только тут: @javascript_jobs

3988 members

Архив канала @vuejs_ru 10 января 2017 г.

09:56:11 ДП
User 552804
ребят
09:56:30 ДП
User 552804
кто нить замечал что js Date() некорректно отрабатывает в safari?
09:56:38 ДП
User 552804
http://codepen.io/seoperin/pen/YNwzWK
codepen.io/seoperin/pen/YNwzWK
...
09:56:48 ДП
User 552804
есть у кого возможность глянуть в сафари и заскринить?
09:57:09 ДП
User 552804
ну я там конечно наговнокодил наверно, щас буду думать как переделать нормально
09:57:15 ДП
User 552804
но интересно что за баг
10:00:45 ДП
User 96737287
У меня в сафари вроде все ок
10:01:02 ДП
User 552804
говорят в сафари toLocaleString хреново работает, может в старых версиях
10:01:04 ДП
User 96737287
https://puu.sh/thpvv/147ad3ac6b.png
puu.sh/thpvv/147ad3ac6b.png
10:01:15 ДП
10:01:19 ДП
User 552804
так получается
10:01:34 ДП
User 552804
щас подумаю как без toLocaleString сделать
10:02:29 ДП
User 552804
"Отображается так в настольном Safari и на iPad, так как там полная версия сайта. В мобильной на iPhone почему-то такого нет" - говорят мне
10:09:26 ДП
User 136935602
стандартный intl полифилл?
10:10:05 ДП
10:10:09 ДП
User 552804
я с js на Вы
10:10:43 ДП
User 136935602
сунь в скрипты страницы
10:10:44 ДП
User 136935602
<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>
10:10:54 ДП
User 136935602
поможет?
10:11:42 ДП
User 136935602
ну или как там скрипты на крупнее подключаются
10:11:46 ДП
User 136935602
Кодпене
10:12:01 ДП
User 552804
ага, понял, щас
10:12:09 ДП
User 552804
то же самое
10:15:30 ДП
10:15:46 ДП
User 552804
в общем то надо просто выводить текст "Распродажа до 10 января" на сегодняшний день всегда...
10:15:50 ДП
User 552804
как еще можно?
10:16:25 ДП
User 552804
а ну ваще там ссылка на полифил то не рабочая)
10:17:31 ДП
User 552804
или так и должно быть
11:39:52 ДП
User 55423102
@vuejs_ru
11:40:04 ДП
User 285538895
Спасибо
11:40:09 ДП
User 55423102
не туда :D
11:40:16 ДП
User 285538895
Ахахахаха
11:40:18 ДП
11:40:18 ДП
11:40:56 ДП
User 285538895
Гуру подскажите, вот туплю прям
11:41:03 ДП
User 285538895
 ready : function()
        {
            this.$http.get('http://admin:1@espo.lc/api/v1/FinishedGoods').then(
                function ( response ) {
                    this.goods = response.data;
                },
                function (response) {
                    console.log('An error occurred.');
                }
            );
        }
11:41:20 ДП
User 285538895
Вот это должно сразу исполниться как только страница загрузилась ?
11:41:48 ДП
User 55423102
в 1.х да, ready. В 2.х mounted
11:41:54 ДП
User 55423102
когда компонент смонтировался
11:42:12 ДП
User 285538895
Так я компонент не монтировал
11:42:22 ДП
User 285538895
Потому что не использую это пока что
11:42:48 ДП
User 285538895
Мне бы побыстрому накидать:
var app = new Vue({
        el: '#goods',
        data: 
        {
          goods: [],
        },
        ready : function()
        {
            this.$http.get('http://admin:1@espo.lc/api/v1/FinishedGoods').then(
                function ( response ) {
                    this.goods = response.data;
                },
                function (response) {
                    console.log('An error occurred.');
                }
            );
        }
    });
11:43:03 ДП
User 152816933
В Vue как бы нет одного понятия "страница загрузились".
Там происходит несколько событий во время загрузки/рендера страницы
11:43:16 ДП
User 552804
какая версия vue?
11:43:17 ДП
User 285538895
вытащить данные по Api да списочек разложить, что бы не делать полотно из вёрстки
11:43:24 ДП
User 285538895
User 552804
какая версия vue?
Последняя
11:43:36 ДП
User 552804
ready замени на mounted
11:44:09 ДП
User 285538895
User 552804
ready замени на mounted
Секунду
11:45:20 ДП
User 152816933
https://ru.vuejs.org/v2/guide/instance.html#Хуки-жизненного-цикла-инстанса
ru.vuejs.org/v2/guide/instance.html
Vue.js — Прогрессивный JavaScript-фреймворк
11:46:32 ДП
User 285538895
Лучей добра вам, спасибо\
02:37:14 ПП
User 60331718
Скучно вам тут без меня, поэтому задам архитектурный вопрос
02:38:20 ПП
User 60331718
Я сейчас пилю что-то похожее на магазин приложений
Будет неплохо хранить данные о приложении в хранилище?
02:38:36 ПП
User 136935602
Смотря какие
02:38:59 ПП
User 60331718
Название, превью картинку, краткое описание и её id
02:39:26 ПП
User 136935602
Зачем их хранить в хранилище?
02:40:20 ПП
User 60331718
User 136935602
Зачем их хранить в хранилище?
Чтобы не грузить слишком сервер когда пользователь возвращается назад
02:40:20 ПП
User 60331718
Посмотрев какое-то приложение
02:41:00 ПП
User 136935602
Ну ок. Но готовься к проблемам синхронизации клиента и сервера :)
02:41:18 ПП
User 136935602
К примеру пользователь и несколько вкладок
02:41:21 ПП
User 60331718
А как правильно сделать то?
02:41:35 ПП
User 60331718
Каждый раз подгружать?
02:41:49 ПП
User 133750577
Илья, как разделяешь, что хранить в сторе, а что в компоненте? Я для себя так и не определил четкий критерий
02:42:00 ПП
User 60331718
User 133750577
Илья, как разделяешь, что хранить в сторе, а что в компоненте? Я для себя так и не определил четкий критерий
+
02:43:21 ПП
User 136935602
User 133750577
Илья, как разделяешь, что хранить в сторе, а что в компоненте? Я для себя так и не определил четкий критерий
Если это нужно в одном месте - то в сторе ему не место :)
02:43:59 ПП
User 136935602
Если чтото нужно сохранять между сессиями (в локалсторадж или индексед дБ) - то в стору
02:44:01 ПП
User 60331718
И вопрос в догонку:
Я у пользователя храню только token и username
Стоит ли делать мутацию которая ничего не изменяет в случае если пользователь меняет пароль? Например для логов
02:44:32 ПП
User 136935602
Можно, но вообще это архитектурно плохо
02:44:47 ПП
User 136935602
Вот я украл у тебя токен твоего пользователя
02:44:59 ПП
User 136935602
Как ты сделаешь мой токен не валидным?
02:45:10 ПП
User 60331718
А как ты его украдешь?
02:45:31 ПП
User 136935602
Да неважно
02:45:47 ПП
User 136935602
Xss, mitm,  да что угодно
02:46:10 ПП
User 60331718
Ну, я его передаю в заголовке  + https
02:47:18 ПП
User 60331718
Хм, как тогда это исправить? Хранить в куках?
02:50:13 ПП
User 133750577
Между сессиями-то понятно. 
Я пробовал перекидывать логику, но когда писал для себя в итоге, пришел к тому, что всю основное вынес в мутации, а асинхронную логику в действия, кторые дергают только мутации. Компоненты дергают только действия или мутации. Внутри компонент остается только их внутренний стейт, изменения которого не нужно запоминать (какой радио баттон выбран в группе, например). В итоге все видно в devTools, все состояние можно мотать туда-сюда, и кажется, что так и нужно по хорошему, нет?
02:50:50 ПП
User 136935602
Сложный вопрос
02:50:57 ПП
User 136935602
Так сделано в redux
02:51:04 ПП
User 136935602
И это неплохо
02:51:13 ПП
User 136935602
Но слегка избыточно местами
02:51:34 ПП
User 133750577
Как и само использование паттерна с хранилищем
02:52:01 ПП
User 136935602
Да. Поэтому я сейчас немного по другому рассуждаю
02:53:26 ПП
User 60331718
User 133750577
Между сессиями-то понятно. 
Я пробовал перекидывать логику, но когда писал для себя в итоге, пришел к тому, что всю основное вынес в мутации, а асинхронную логику в действия, кторые дергают только мутации. Компоненты дергают только действия или мутации. Внутри компонент остается только их внутренний стейт, изменения которого не нужно запоминать (какой радио баттон выбран в группе, например). В итоге все видно в devTools, все состояние можно мотать туда-сюда, и кажется, что так и нужно по хорошему, нет?
Я в действия сейчас всю логику выношу, которая нужна в нескольких местах:
Например запросы для авторизации, регистрации, выхода, смена пароля все в модуле хранилища user прописал
02:53:29 ПП
User 136935602
Если мне данные нужны на одной странице и у меня нет сложных сценариев их обработки - я их в стору не кидаю
02:54:10 ПП
User 136935602
Если же в нескольких (простейший пример - у меня список пользователей на одной странице и в редакторе дропдаун с этим же списком)  - такие данные в хранилище
02:55:46 ПП
User 60331718
User 60331718
Я в действия сейчас всю логику выношу, которая нужна в нескольких местах:
Например запросы для авторизации, регистрации, выхода, смена пароля все в модуле хранилища user прописал
Т.е прям запросы к серверу в них прописаны через asio, а взвращаю промисы
04:06:58 ПП
User 40268779
User 60331718
Чтобы не грузить слишком сервер когда пользователь возвращается назад
посмотрел service worker API ? там же есть разные стратегии - типо local first / server first и тд.
04:07:56 ПП
User 60331718
User 40268779
посмотрел service worker API ? там же есть разные стратегии - типо local first / server first и тд.
Не, не смотрел, сейчас почитаю
04:09:24 ПП
User 40268779
а потом сразу сюда - https://github.com/GoogleChrome/sw-toolbox
github.com/GoogleChrome/sw-toolbox
sw-toolbox - A collection of service worker tools for offlining runtime requests
04:09:31 ПП
User 40268779
чтобы не писать все руками