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

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

3988 members

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

04:44:28 ДП
User 152816933
User 139059931
Кстати по поводу маски, есть клевый https://github.com/text-mask/text-mask
github.com/text-mask/text-mask
Input mask for React, Angular, Ember, Vue, & plain JavaScript - text-mask/text-mask
Не оч. У меня глючит демка на вводе номера телефона.
04:54:17 ДП
User 133750577
User 152816933
Не оч. У меня глючит демка на вводе номера телефона.
Цифры местами меняет, тоже самое
04:59:30 ДП
User 133750577
Тут недавно спорил кто-то, если не ошибаюсь, по поводу где хранить токен в spa. Я думаю сохранять в localstorage, синхронизировать его с vuex при инициализации, это как, тру вей?
05:38:25 ДП
User 60331718
User 133750577
Тут недавно спорил кто-то, если не ошибаюсь, по поводу где хранить токен в spa. Я думаю сохранять в localstorage, синхронизировать его с vuex при инициализации, это как, тру вей?
Есть лучший способ, в виде плагина для vuex, который сам сохраняет состояние в localstorage
05:38:32 ДП
User 60331718
Там выше кто-то кидал
05:40:39 ДП
User 60331718
Если сам не найдёшь, то минут через 30 кину
05:46:19 ДП
User 60331718
User 133750577
Тут недавно спорил кто-то, если не ошибаюсь, по поводу где хранить токен в spa. Я думаю сохранять в localstorage, синхронизировать его с vuex при инициализации, это как, тру вей?
https://github.com/robinvdvleuten/vuex-persistedstate
github.com/robinvdvleuten/vuex-persistedstate
💾 Persist and rehydrate your Vuex state between page reloads. - robinvdvleuten/vuex-persistedstate
06:01:18 ДП
User 136935602
С ним есть одна очень неприятная особенность
06:01:38 ДП
User 136935602
Он не позволяет узнать момент, когда данные были загружены
06:03:11 ДП
User 136935602
Точнее, выглядит это слегка по уродски. У меня при запуске поднимается стора, и апишка лезет в неё чтоб забрать оттуда токен
06:03:36 ДП
User 136935602
Так вот логику апишки приходится в setTimeout 0 оборачивать
06:04:01 ДП
User 136935602
И ещё, если планируете делать SSR - место токена в куках
06:05:20 ДП
User 60331718
User 136935602
И ещё, если планируете делать SSR - место токена в куках
Ssr?
06:05:35 ДП
User 136935602
Server side rendering
06:06:01 ДП
User 55423102
Webpack 2 релизнули наконец
06:06:28 ДП
User 60331718
User 55423102
Webpack 2 релизнули наконец
А я ещё и первый не освоил..
06:06:45 ДП
User 136935602
Ага. Я так ждал tree-shaking а пользы с него на моих реальных сценариях 0
06:07:09 ДП
User 55423102
На сайте голосовалку открыли) народ бьется за TypeScript tree shaking)
06:10:15 ДП
User 136935602
Я в ts разочарован
06:10:58 ДП
User 55423102
А поподробнее? Некоторые в нём видят манну небесную
06:11:29 ДП
User 136935602
С английским как?
06:11:48 ДП
User 136935602
Я доклад на эту тему делал
06:12:03 ДП
User 55423102
Нормально с ним) иногда с переводчиком, но общаемся
06:12:08 ДП
User 136935602
Хотя не, сейчас дойду до офиса
06:12:13 ДП
User 136935602
Покажу ппимер
06:12:48 ДП
06:13:24 ДП
User 136935602
Если кратко то система типов в ts отстой
06:14:04 ДП
User 55423102
Несмотря на все их попытки во второй версии втащить разделение типов и null? что там преподносили как большую фичу
06:20:35 ДП
User 136935602
Вот, реальный пример. Задача следующая. Есть апишка, которая генерирует ответы с глубокой вложенностью:
{ a: { b: [1, 2, 3], c: {u: 4} }, d: 5}

Необходимо превращать это в плоский объект: 
{
'a.b': [1, 2, 3],
'a.c.u': 4,
'd': 5
}
06:21:12 ДП
User 136935602
значения могут быть любыми, превращаются в цепочку только объекты( массивы не разворачиваем)
06:22:36 ДП
User 136935602
вот код, решающий задачу
06:22:37 ДП
User 136935602
https://gist.github.com/xanf/9da671405cd9ea01fec489469471572a
gist.github.com/xanf/9da671405cd9ea01fec489469471572a
06:22:48 ДП
User 136935602
Вопрос: что не так с этим кодом
06:24:10 ДП
User 55423102
ну по всей видимости в any :) типа зачем типизация если юзаем any везде
06:24:19 ДП
User 136935602
не, не, обнови гист, я ее просто не убрал :)
06:25:26 ДП
User 136935602
вот, еще раз обновил
06:26:01 ДП
User 55423102
ну тогда и тут  const dottedPrefix = prefix ? ${prefix}. : ''; проверку убери)
06:26:10 ДП
User 136935602
не, тут все ок
06:26:23 ДП
User 136935602
это ж не типы
06:26:30 ДП
User 136935602
просто тернарка
06:26:32 ДП
User 55423102
ну он же так и так уже nullable не будет, по умолчанию строкой пустой
06:26:47 ДП
User 136935602
правильно  - я проверяю на пустую строку
06:27:04 ДП
User 55423102
а, там точку не заметил
06:27:05 ДП
User 136935602
если пустая строка - оставить пустой строкой, 
если непустая - дописать спереди точку
06:27:14 ДП
User 136935602
Давайте спросим typescript - все ли ок с этим кодом
06:27:42 ДП
User 136935602
http://bit.ly/2jIZ6Ha
06:27:51 ДП
User 136935602
typescript не имеет никаких возражений
06:29:05 ДП
User 136935602
для тех кто не в курсе - я просто указал что на входе функции объект, ключи которого - строки, а значениями может быть все что угодно (в typescript это записывается как {} )
06:29:19 ДП
User 55423102
ну если в опциях песочницы поставить все чекбоксы то одна ошибка появляется
06:29:50 ДП
User 136935602
там где noImplicitAny это ошибка что он не может тип вывести
06:30:05 ДП
User 55423102
а, ок)
06:30:15 ДП
User 136935602
теперь возьмем flow
06:30:29 ДП
User 136935602
скопируем тот же код, только вместо {} используем слово mixed (это аналог {} во flow)
06:30:43 ДП
User 136935602
http://bit.ly/2jXMhYY
flowtype.org/try
Flow is a static type checker for JavaScript.
06:31:15 ДП
User 136935602
а вот flow абсолютно корректно ударил меня по рукам: он говорит - уважаемый, а ты забыл что null это тоже object и ты попытаешься выполнить его flatten
06:31:38 ДП
User 60331718
ребзь, что посоветуете для обычного логера? чтобы console.log не писать
06:32:54 ДП
User 55423102
а, всмысле что свойство может быть, а вот значение у него Null и мы тогда будем пытаться его плоским делать
06:33:00 ДП
06:33:31 ДП
User 136935602
и вот в этом проявляется бесполезность typescript. Да, конечно приятно иметь автокомплит по полям каким нибудь описанных в типах, но блин - это же простейшая ошибка
06:33:46 ДП
User 136935602
Пример не лучший, просто вчера под руку попался на реальном проекте
06:34:21 ДП
User 55423102
в общем если выбирать чем типизировать то лучше Flow?
06:35:04 ДП
User 55423102
а чем под вебпак flow потом собирать
06:35:23 ДП
User 136935602
у Flow в разы более мощная система ВЫВОДА типов. Т.е. когда flow понимает без единого типа в коде что за фигня там может быть
06:35:41 ДП
User 136935602
у Typescript сейчас конечно понаписали библиотек типов для популярных библиотек, в этом его сильная сторона
06:35:46 ДП
User 136935602
кстати сам Vue использует flow
06:35:51 ДП
User 136935602
https://www.youtube.com/watch?v=GEo3XIJw8HM
06:36:05 ДП
User 136935602
минута самопиара - я там 50 минут разношу typescript в пух и прах )
06:36:19 ДП
06:36:58 ДП
User 55423102
звук дребезжит немного
06:37:22 ДП
User 136935602
там пару минут
06:37:24 ДП
User 136935602
дальше лучше
06:37:42 ДП
User 136935602
орги балбесы запись экрана не вставили, хотя я им прислал ее :)
06:37:47 ДП
User 184398046
@xanf_ua А покажи свой типичный компнент на flow с this.$router и this.$store ☺️
06:38:52 ДП
User 136935602
ни то ни то не использую :)
06:39:42 ДП
User 60331718
https://gist.github.com/Fl0pZz/1944cd7b7a409fcb81962510230da355
пока тут есть активность, можете глянуть? 
как в методы передать функцию, реализованную вне компоненты, но чтоьы ее можно было вызывать через this?
gist.github.com/Fl0pZz/1944cd7b7a409fcb81962510230da355
06:42:39 ДП
User 184398046
А какой у нее вообще this? window?
methods: {
    creator: creator.bind(this)
}
06:43:43 ДП
User 184398046
User 136935602
ни то ни то не использую :)
Ну тогда с каким-нить методом с данными из data (на flow)
06:44:56 ДП
User 136935602
@gmtyllo https://gist.github.com/xanf/8eea0715ea516c819aed18553d4f1875
gist.github.com/xanf/8eea0715ea516c819aed18553d4f1875
06:49:01 ДП
User 136935602
@gmtyllo так оно прибиндит точно не тот this
06:52:04 ДП
06:52:15 ДП
User 55423102
Даже в 1080 не понять что там после ReduxAction написано 😂
06:52:30 ДП
User 5065922
мутный код какой-то
06:52:59 ДП
06:53:22 ДП
User 60331718
User 184398046
А какой у нее вообще this? window?
methods: {
    creator: creator.bind(this)
}
Нет, не window, а компоненты
06:53:51 ДП
User 136935602
User 55423102
Даже в 1080 не понять что там после ReduxAction написано 😂
просто & и на нем курсор стоит
06:54:09 ДП
User 55423102
нет, курсор уже в другом месте)
06:54:19 ДП
User 136935602
мышиный
06:54:21 ДП
User 55423102
наверное шрифт такой, не узнать непосвященным)
06:54:25 ДП
06:54:27 ДП
06:55:33 ДП
User 136935602
шрифт та самая PragmataPro,  ее тут недавно вспоминали
06:57:44 ДП
User 55423102
теперь какой-то код пишешь, а его не показывают толком)
06:57:52 ДП
User 55423102
о, наконец
06:59:14 ДП
User 55423102
с написанием switch прикольный глюк) раза три пишешь и удаляешь)
06:59:23 ДП
User 136935602
flv-шка с кодом непожатая 999метров
07:01:28 ДП
User 136935602
лью на дропбокс )
07:01:55 ДП
User 55423102
да ладно) думаю суть уловить ролика достаточно будет)
07:10:36 ДП
User 136935602
@alex_sokolov https://www.dropbox.com/s/pq642l9hy7g1dot/kharkivjs.flv?dl=0
dropbox.com/s/pq642l9hy7g1dot/kharkivjs.flv?dl=0
Shared with Dropbox
07:10:57 ДП
User 136935602
а черт
07:11:05 ДП
User 136935602
дропбокс бесполезный :( первые 15 минут
07:11:16 ДП
User 136935602
чтоб полностью - надо скачать
07:17:47 ДП
User 55423102
спасибо!
07:19:10 ДП
User 136935602
надо будет сесть залить на youtube нормальную версию, но лениво
07:19:41 ДП
User 136935602
Кстати, по теме канала - поймал неприятный баг со <style scoped> в Vue
07:20:36 ДП
User 142429867
User 136935602
минута самопиара - я там 50 минут разношу typescript в пух и прах )
а почему на английском?
07:22:10 ДП
User 136935602
@vladimirdotk https://youtu.be/WlB4fSy1RL0?t=747
youtube.com/watch?v=WlB4fSy1RL0
Конференция Most JS Frameworks Days проводилась в Киеве 4 декабря 2016 года Презентация доклада: http://frameworksdays.com/event/most-js-fwdays-2016/review/n...
07:22:25 ДП
User 136935602
там ссылка с таймстампом и там ответ :)
07:33:57 ДП
User 60331718
как сделать компоненту без template?
07:35:07 ДП
User 136935602
просто его не объявлять?
07:35:10 ДП
User 136935602
а зачем такая штука?
07:36:00 ДП
User 60331718
делаю компоненту с уведомлениями, у нее просто нет шаблона, потому что вызвается toast из materialize
07:36:26 ДП
User 60331718
вся логика перенесена в vuex, а в ней просто свистелки перделки сделаны
07:38:21 ДП
User 152816933
User 136935602
Кстати, по теме канала - поймал неприятный баг со <style scoped> в Vue
что за баг?
07:38:42 ДП
User 60331718
User 60331718
как сделать компоненту без template?
07:39:30 ДП
User 60331718
а все, нашел ошибку :D
07:39:42 ДП
User 60331718
неверный путь прописал, когда компоненту импортил
07:45:17 ДП
User 136935602
User 152816933
что за баг?
Есть компонент А, который допустим объявляет в style scoped классы .foo и .bar
Этот компонент A рендерит компонент B следующим образом <b class="foo">
В компоненте B тоже в style scoped объявлены классы допустим .foo и .baz и используется где-то в глубине. Темплейт B такой <div class="baz">.... тут пофигу</div>

Что происходит. vue навешивает data аттрибут на компонент A. Допустим это data-1. 
Поскольку на компоненте B есть scoped стиль foo на нем тоже будет аттрибут data-1

Теперь vue смотит на компонент B. У него тоже есть scoped стили, поэтому на B будет навешаны дата аттрибуты data-2
В итоге B будет по факту отрендерен как <div class="foo baz" data-1 data-2> (один класс пришел от А, второй от B и два дата аттрибута от scoped стилей)

И тут мы увидим как на B сработает scoped-стиль foo из B - хотя ж он не должен. Мы его не навешивали.
08:00:20 ДП
User 55423102
issue им запилишь?)
08:02:25 ДП
User 136935602
они тут ни при чем
08:27:47 ДП
User 60331718
ребзь, откуда вылезает эта какашка?
08:28:40 ДП
User 60331718
хмм, по всей видимости из-за vuex-persistedstate
08:29:10 ДП
User 60331718
@xanf_ua помоему ты там выше писал, что что-то подобное было, да?
08:30:23 ДП
User 136935602
Если ты используешь persistedstate то данные должны быть сериализуемые
08:30:32 ДП
User 136935602
С set не прокатит
08:36:06 ДП
User 112715267
User 136935602
Вот, реальный пример. Задача следующая. Есть апишка, которая генерирует ответы с глубокой вложенностью:
{ a: { b: [1, 2, 3], c: {u: 4} }, d: 5}

Необходимо превращать это в плоский объект: 
{
'a.b': [1, 2, 3],
'a.c.u': 4,
'd': 5
}
О, а я наоборот делал
08:37:42 ДП
User 112715267
User 60331718
ребзь, откуда вылезает эта какашка?
Ты обращаешься к state.notices. Ты хранишь в сторе функцию? Откуда set?
08:38:40 ДП
User 60331718
хмм, а стоит ли ее хранить в этом сторе?
08:39:49 ДП
User 112715267
Вот и я не понимаю
08:40:22 ДП
User 60331718
понятно, что по хорошему надо, но сериализовать каждый раз весь map - говнокодерство
08:42:23 ДП
User 60331718
угадайте, какой браузер самый ущербный?
08:46:53 ДП
User 164670195
Очевидно, что хром
08:47:02 ДП
User 60331718
User 112715267
Ты обращаешься к state.notices. Ты хранишь в сторе функцию? Откуда set?
я не храню в сторе функицю, это ведь ассоциативный массив
08:47:11 ДП
User 60331718
но ошибка все равно есть
08:47:14 ДП
User 60331718
хз как ее исправить
08:47:32 ДП
08:47:33 ДП
User 112715267
Ну так откуда там set тогда?
08:47:57 ДП
User 60331718
User 112715267
Ну так откуда там set тогда?
я вызываю функцию этого поля, он же ловарик сам по себе
08:48:28 ДП
User 112715267
Напиши console log
08:48:33 ДП
User 112715267
И удивись
08:50:51 ДП
User 60331718
console.log(state.notices) получаю Map
08:50:54 ДП
User 60331718
все верно вродь
08:52:04 ДП
08:59:55 ДП
User 60331718
как я блять ненавижу отлавливать ошибки из браузера под webpack
09:00:09 ДП
User 60331718
пока доберешься до нужной уже борода как валенок станет
09:15:16 ДП
User 60331718
действия в сторе всегда возвращают promise?
09:24:28 ДП
09:28:37 ДП
User 60331718
так так, я понял где ошибка, не понял как ее решить
09:29:07 ДП
User 60331718
вот у меня в stste есть Map, как мне получить какое-то его значение по ключу?
09:29:16 ДП
User 60331718
такую функцию в геттер не положишь
09:29:22 ДП
User 60331718
в мутацию тоже
09:29:31 ДП
User 60331718
только в действие видимо?
09:38:06 ДП
User 60331718
как такое может быть, что в actions у меня функции не возвращают функции, а в компоненте от действия я получаю промис?
09:40:51 ДП
User 60331718
ору, серьезно промис, откуда он может взяться? точно не mapActions
09:41:30 ДП
User 60331718
вот это действие
09:44:35 ДП
User 133750577
User 136935602
нет
Разве?
09:49:15 ДП
User 112715267
User 60331718
Ну и где сет
09:51:25 ДП
User 133750577
User 133750577
Разве?
Всегда же 
dispatch (_type, _payload) {
    // check object-style dispatch
    const {
      type,
      payload
    } = unifyObjectStyle(_type, _payload)

    const entry = this._actions[type]
    if (!entry) {
      console.error(`[vuex] unknown action type: ${type}`)
      return
    }
    return entry.length > 1
      ? Promise.all(entry.map(handler => handler(payload)))
      : entry[0](payload)
  }
09:54:29 ДП
User 60331718
Таки промис? С телефона не оч понятен код
09:56:00 ДП
User 60331718
А все, понял
09:56:22 ДП
User 60331718
Твоя фраза была незаметна над кодом
09:59:49 ДП
User 112715267
Поч я вспомнил момент из Гарри Поттера
09:59:53 ДП
User 112715267
- после стольких лет?
- всегда
11:51:02 ДП
11:51:10 ДП
User 112715267
vee-validate может работать с json?
11:51:47 ДП
User 112715267
то есть не напрямую с инпутами, а с json, в котором значения будут лежать
11:52:01 ДП
User 60331718
User 112715267
то есть не напрямую с инпутами, а с json, в котором значения будут лежать
Нет конечно
11:52:13 ДП
User 60331718
Как ты будешь валидировать это?
11:52:21 ДП
User 60331718
У инпута есть type
11:57:57 ДП
User 55423102
@Kelin2025 самому можно попробовать валидировать JSON, например с помощью https://github.com/epoberezkin/ajv
github.com/epoberezkin/ajv
The fastest JSON Schema Validator. Supports draft-04/06/07 - epoberezkin/ajv
11:58:16 ДП
User 112715267
http://indicative.adonisjs.com/
Кто-нибудь юзал?
12:20:51 ПП
User 597730
"Indicative is Laravel inspired beautiful schema validator" о, спасибо, пробегало однажды, забыл заstarить.
12:21:27 ПП
User 112715267
как в json schema указать допустимые значения
12:21:51 ПП
User 112715267
то есть допустимые, допустим, "message", "image" и "gallery"
12:24:53 ПП
User 597730
можно своё правило написать
12:33:51 ПП
User 234491501
А как вы думаете. Стоит так писать?
https://github.com/robinvdvleuten/vuex-persistedstate/blob/master/src/plugin.js#L4-L9

Строк кода конечно меньше, понять можно, но на понимание тратится время.
01:17:40 ПП
User 60331718
мутация может вызывать внутри себя другую мутацию?
01:34:54 ПП
01:34:59 ПП
User 112715267
и это грустно
01:59:19 ПП
User 60331718
геттеры у вьюкса не реактивны чтоли?
02:00:10 ПП
User 60331718
более того, они вычисляются всего 1 раз?
02:05:58 ПП
User 60331718
а ребзь?
02:14:11 ПП
User 60331718
ппц парни, если хотите через геттер узнавать размер Map вот так:
state.somMap.size === 0 - забудьте о реактивности
02:17:38 ПП
User 133750577
Они реактивны, ты что-то делаешь не так
02:22:24 ПП
User 112715267
Они реактивны, дядь
02:22:41 ПП
User 112715267
Просто если им присвоить значение, они ничего не изменят
02:32:41 ПП
User 60331718
User 60331718
ппц парни, если хотите через геттер узнавать размер Map вот так:
state.somMap.size === 0 - забудьте о реактивности
Для вот этого случая - не реактивны
02:42:26 ПП
User 112715267
Можно ли из промиса прервать цикл?
02:42:34 ПП
User 112715267
break там, естественно, не робит
03:10:03 ПП
User 152816933
https://twitter.com/vuejs/status/821439240198324226
:)
twitter.com/vuejs/status/821439240198324226
Coming soon: `vue build component.vue —mount` <- instantly build and serve a component in browser with hot reload. Zero setup!
03:12:19 ПП
User 60331718
User 152816933
https://twitter.com/vuejs/status/821439240198324226
:)
twitter.com/vuejs/status/821439240198324226
Coming soon: `vue build component.vue —mount` <- instantly build and serve a component in browser with hot reload. Zero setup!
О, тут как раз вроде чувак про это спрашивал вчера
03:13:03 ПП
03:14:53 ПП
User 60331718
вот вы мне тут втираете про что, что гетеры реактивны - хуево оно реактивны я скажу
03:15:36 ПП
User 60331718
внутри мутации или действия они реативны, а вот геттер нихрена не изменяется
03:16:15 ПП
User 60331718
более того, у меня складывается впечатление, что гетеры высчитываются только 1 раз, а потом каждый раз одно и тоже значение отдают
03:16:40 ПП
User 60331718
ибо log в консольку из гетера пишется всего 1 раз
03:35:36 ПП
User 55423102
User 152816933
https://twitter.com/vuejs/status/821439240198324226
:)
twitter.com/vuejs/status/821439240198324226
Coming soon: `vue build component.vue —mount` <- instantly build and serve a component in browser with hot reload. Zero setup!
А у меня до сих пор хот релоад обычный не получается завести 😅
03:49:16 ПП
User 85413039
User 60331718
более того, у меня складывается впечатление, что гетеры высчитываются только 1 раз, а потом каждый раз одно и тоже значение отдают
Ишью.в гитхаб запили
03:52:41 ПП
User 108562525
User 136935602
они тут ни при чем
эм.. а кто тогда виноват?
03:53:18 ПП
User 108562525
тоже с таким столкнулся, кстати.
03:53:24 ПП
User 108562525
но мне норм было, не мешало.
04:18:30 ПП
User 60331718
User 85413039
Ишью.в гитхаб запили
инглишь плох чтобы проблему описать
04:18:43 ПП
User 60331718
да и потом я не спец же, может мой косяк
04:19:29 ПП
User 85413039
Гугл переводчик
04:19:43 ПП
User 85413039
Обычно контрибьюторы очень отзывчивы
04:20:25 ПП
User 60331718
может вы сначала гляните глазами?
04:21:34 ПП
User 60331718
я вообще немного удивлен, что если мы обновляем state в created то в логах стейта (в vue-dev) ничего не отображается
04:21:44 ПП
User 60331718
а принимается как base-state
04:24:35 ПП
User 60331718
https://gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
вот, если не трудно, гляньте
gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
04:50:10 ПП
User 60331718
хм, прикольно, кажется я нашел ошибку у себя
04:50:44 ПП
User 108562525
теперь это чат рафаэля :(
очень много сообщений от него
04:50:59 ПП
User 60331718
 state = {
          notices: new Map(),
          id: 0,
          old_id: null
        }
Вот так я обнулял state в мутации, не надо так..
04:51:14 ПП
User 60331718
зато у вас всегда есть что почитать
04:55:57 ПП
User 56924675
у меня на прошлой работе был такой чел
04:56:18 ПП
User 56924675
который продолжал говорить, даже когда на него переставали обращать внимание
04:57:10 ПП
User 133750577
Почитай про стрелочные функции
04:57:10 ПП
User 133750577
https://gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
вот, если не трудно, гляньте
gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
04:57:26 ПП
User 133750577
По другому геттеры нужно определить
04:57:41 ПП
User 133750577
Через this
05:12:51 ПП
User 60331718
User 133750577
По другому геттеры нужно определить
эээ, в документации точно так же как у меня
05:13:00 ПП
User 60331718
https://vuex.vuejs.org/ru/getters.html
05:26:51 ПП
User 40268779
User 56924675
который продолжал говорить, даже когда на него переставали обращать внимание
dev/null
05:35:52 ПП
User 139068333
подскажите
05:36:08 ПП
User 139068333
если мой проект не хелловорлд то как угадать где оно отломано ?
05:36:15 ПП
User 139068333
Uncaught TypeError: Cannot read property 'id' of null
    at Proxy.eval (eval at makeFunction (vue.js:8260), <anonymous>:2:496)
    at Vue$3.Vue._render (vue.js:3054)
    at Vue$3.<anonymous> (vue.js:2430)
    at Watcher.get (vue.js:1661)
    at new Watcher (vue.js:1653)
    at Vue$3.Vue._mount (vue.js:2429)
    at Vue$3.$mount (vue.js:6000)
    at Vue$3.$mount (vue.js:8327)
    at initRender (vue.js:3018)
    at Vue$3.Vue._init (vue.js:3318)
05:36:40 ПП
User 112715267
В папке Ctrl+F -> id
05:38:07 ПП
User 139068333
ну сейчас я примерно так и делаю и нахожу десять мест
05:38:18 ПП
User 139068333
но если мой проект не хелловорлд ?
05:38:54 ПП
User 112715267
чекай в этих 10 местах
05:39:06 ПП
User 139068333
если мест сто ?
05:39:06 ПП
User 112715267
хз, как иначе
05:40:07 ПП
User 112715267
ребята
05:40:24 ПП
User 112715267
у кого есть лишние минут 10?
05:40:47 ПП
User 112715267
мне надо проверку написать для дерева, но я че-то туплю с этой асинхронностью
05:42:28 ПП
User 40268779
User 112715267
мне надо проверку написать для дерева, но я че-то туплю с этой асинхронностью
Клади промисы проверки каждого в массив и потом promise.all жди
05:42:41 ПП
User 112715267
Я пытаюсь
05:42:45 ПП
User 112715267
Только какая-то херня получаетс
05:43:01 ПП
User 112715267
херни какой-то понаписал строк на 200
05:43:01 ПП
User 40268779
Работает такое 100%
05:43:19 ПП
05:43:19 ПП
User 40268779
На ассемблере чтоль?
05:43:51 ПП
User 112715267
я не понимаюююююююююююююююююююю
05:43:56 ПП
User 112715267
горит
05:44:56 ПП
User 40268779
Я с мобильного, написать не могу
05:44:56 ПП
User 112715267
Как мне Promise.all сделать
05:45:01 ПП
User 112715267
вот у меня есть массив с ними
05:45:12 ПП
User 40595124
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
The Promise.all(iterable) method returns a single Promise that resolves when all of the promises in the iterable argument have resolved or when the iterable argument contains no promises. It rejects with the reason of the first promise that rejects.
05:45:15 ПП
User 112715267
Но чтобы промисы туда поместить, нужен цикл ведь
05:45:19 ПП
User 112715267
А цикл - асинхронно
05:45:31 ПП
User 40595124
Я на Mozdev читал про Promise. Всё просто и ясно.
05:45:36 ПП
User 112715267
да я видел эти гайды, там конкретно моего случая нет
05:45:41 ПП
User 40268779
Ну как создал промис так и пушай
05:45:54 ПП
User 40268779
Или у тебя итератор?
05:46:04 ПП
User 112715267
У меня массив с сообщениями
05:46:16 ПП
User 112715267
не с промисами
05:46:33 ПП
User 112715267
Как мне запилить массив промисов и ПОСЛЕ ЭТОГО проверить их все
05:46:59 ПП
User 40268779
Ну создай новый пустой. Далее проходишь по сообщениям и кладешь на каждый промис в массив
05:47:11 ПП
User 40268779
Далее промис.all
05:47:21 ПП
User 112715267
User 40268779
Ну создай новый пустой. Далее проходишь по сообщениям и кладешь на каждый промис в массив
чегоо
05:47:39 ПП
User 40268779
Массив Для промисов создай
05:47:44 ПП
User 112715267
я сделал
05:51:33 ПП
05:52:00 ПП
User 112715267
ох уж эти автоскобки
05:56:16 ПП
User 65484181
User 136935602
Есть компонент А, который допустим объявляет в style scoped классы .foo и .bar
Этот компонент A рендерит компонент B следующим образом <b class="foo">
В компоненте B тоже в style scoped объявлены классы допустим .foo и .baz и используется где-то в глубине. Темплейт B такой <div class="baz">.... тут пофигу</div>

Что происходит. vue навешивает data аттрибут на компонент A. Допустим это data-1. 
Поскольку на компоненте B есть scoped стиль foo на нем тоже будет аттрибут data-1

Теперь vue смотит на компонент B. У него тоже есть scoped стили, поэтому на B будет навешаны дата аттрибуты data-2
В итоге B будет по факту отрендерен как <div class="foo baz" data-1 data-2> (один класс пришел от А, второй от B и два дата аттрибута от scoped стилей)

И тут мы увидим как на B сработает scoped-стиль foo из B - хотя ж он не должен. Мы его не навешивали.
а я думал нафиг css modules когда есть scoped
06:02:37 ПП
06:03:36 ПП
06:08:32 ПП
User 136935602
@Kelin2025 а в чем проблема?
06:08:53 ПП
User 112715267
как ресолвить/режектить из вложенного промиса
06:08:56 ПП
User 112715267
внешний
06:09:49 ПП
User 133944225
function, которая возвращает промис не?
06:11:00 ПП
User 136935602
myPromise(...).then(resolve)
06:11:01 ПП
06:12:50 ПП
User 60331718
так, я кому-то вчера обещал показать свою реализацию стека уведомлений, карочи вот :
https://gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
06:45:58 ПП
User 85413039
а зачем нужен Vuex?
06:46:48 ПП
User 60331718
User 85413039
а зачем нужен Vuex?
чтобы хранить состояние твоего приложения в едином месте
06:46:51 ПП
User 175310
User 85413039
а зачем нужен Vuex?
Аналог редакса только для вью
06:46:58 ПП
User 60331718
а не раскидывать его нопнятно где
06:49:35 ПП
User 85413039
я вот думаю
06:49:40 ПП
User 85413039
есть страничка
06:50:19 ПП
User 85413039
записать аудио, прослушать, если норм, отправить на сервер, завершить сессию
06:50:49 ПП
User 136935602
Тебе vuex не нужен :)
06:52:03 ПП
User 136935602
User 60331718
так, я кому-то вчера обещал показать свою реализацию стека уведомлений, карочи вот :
https://gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
Looks good, но объясни зачем Map :) Помойму тут как раз массив с push/pop ложился отлично
06:52:17 ПП
User 60331718
User 136935602
Тебе vuex не нужен :)
если хочет свистелок-перделок много добавить - то нужно :D
06:52:25 ПП
User 136935602
зачем?
06:52:59 ПП
User 60331718
User 136935602
Looks good, но объясни зачем Map :) Помойму тут как раз массив с push/pop ложился отлично
я руководствоался тем, что так быстрее иметь доступ к нотификации с нужной id
06:53:53 ПП
User 60331718
просто у меня не просто стек, в который что-то положили и что-то выложили, а штука которая должна позволять изменять уведомления, которые показывается пользователю
06:54:50 ПП
User 60331718
допустим человек регистрируется и у него ошибка в нескольких полях: отобразим все ошики в 1 уведомлении, и по мере того, как он будет их сиправлять мы будем изменять это уведомление, оставляя только то, что ему осталось исправить
06:54:59 ПП
User 136935602
Для этого надо переделать pushNotice на экшн, чтобы сущность, которая добавляет нотис могла узнать какой id ему был присвоен
06:55:27 ПП
User 136935602
а стоп, туплю, пардон
06:55:31 ПП
User 136935602
с телефона (:
06:56:14 ПП
User 60331718
хм, ну может действительно стоит разнести 1 действие на 2, чтобы понятнее было
06:56:32 ПП
User 136935602
CHANGE_NOTICE не имеет защиты от дурака, это опасно
06:56:50 ПП
User 136935602
я могу напушить id 1, 2, 3... потом вызвать CHANGE_NOTICE с id 5
06:56:59 ПП
User 136935602
напушить еще 2 уведомления и оно перетрется
06:57:06 ПП
User 60331718
User 136935602
CHANGE_NOTICE не имеет защиты от дурака, это опасно
действительно, сейчас исправлю
06:57:37 ПП
User 60331718
но тогда проще действие написать, которое в случае чего сгенерит ошибку
06:57:49 ПП
User 60331718
все равно диспатч вернет промис
06:58:11 ПП
User 112715267
User 136935602
Тебе vuex не нужен :)
Советы от Ильи
06:58:27 ПП
User 112715267
Почему я ору ~_~
06:58:53 ПП
User 136935602
Я с удовольствием подискутирую на эту тему
06:59:08 ПП
User 112715267
Ахахахаха
06:59:15 ПП
06:59:17 ПП
User 112715267
все правильно сказал
06:59:29 ПП
User 112715267
я не знаю, почему засмеялся, честно
06:59:48 ПП
User 136935602
Тут мне уже вчера пытались рассказать что мой удел JQuery, так что я ничему не удивляюсь :)
07:01:37 ПП
User 112715267
Да не, там не про удел имелось в виду
07:02:02 ПП
User 136935602
Я иронизирую и нагоняю драму (:
07:02:10 ПП
User 112715267
А просто, ты такие кул стори рассказывал, что приходишь к выводу, что jQuery - true way
07:02:27 ПП
User 60331718
User 136935602
напушить еще 2 уведомления и оно перетрется
вот кстати, пол дня потратил на геттеры, хотел возвращать ( Map.size === 0) чтобы чекать пустой ли стек, а в таком случае геттер не ватчится
07:02:47 ПП
User 136935602
Ты не поверишь :) Вот я вчера посмотрел на все существующие реализации гридов под vue
07:02:54 ПП
User 136935602
плюнул на все и написал обертку над jsgrid
07:03:03 ПП
User 136935602
Игнорировать экосистему jquery - глупо
07:03:17 ПП
User 136935602
Там огромная куча отстойнейшего кода, но есть и превосходные экземпляры
07:04:33 ПП
User 65484181
где можно глянуть сорсы сайта vue@2?
07:04:55 ПП
User 136935602
https://github.com/vuejs/vuejs.org
github.com/vuejs/vuejs.org
vuejs.org - 📄 The official documentation site for Vue.js.
07:05:19 ПП
User 60331718
User 60331718
вот кстати, пол дня потратил на геттеры, хотел возвращать ( Map.size === 0) чтобы чекать пустой ли стек, а в таком случае геттер не ватчится
@xanf_ua кстати почему так?
07:06:07 ПП
User 136935602
потому что свойство size на Map не реактивное?
07:06:08 ПП
User 60331718
получается, что еслибы свойство size было бы методом, то все бы работало
07:06:22 ПП
User 136935602
тоже нет
07:07:03 ПП
07:08:07 ПП
07:09:00 ПП
User 65484181
User 136935602
https://github.com/vuejs/vuejs.org
github.com/vuejs/vuejs.org
vuejs.org - 📄 The official documentation site for Vue.js.
так там md один
07:09:32 ПП
User 136935602
правильно
07:09:39 ПП
User 136935602
оно с помощью hexo генерируется из маркдауна
07:09:45 ПП
User 136935602
https://hexo.io/
07:12:13 ПП
User 136935602
Кстати, вот кому там таск хороший был
07:12:26 ПП
User 136935602
Взять jsgrid и обернуть его во vue правильно
07:13:14 ПП
User 136935602
Правильно это с системой событий,  возможностью определять всякие pagerenderer и кастомные шаблоны  слотами и тд
07:13:32 ПП
User 136935602
Объем таска огромнейший и там куча прикольных челленджей
07:15:05 ПП
User 65484181
User 136935602
оно с помощью hexo генерируется из маркдауна
сорри, пропустил
где можно глянуть сорсы сайта НА vue@2?
07:15:22 ПП
User 60331718
User 65484181
сорри, пропустил
где можно глянуть сорсы сайта НА vue@2?
Так там в экзамплах же есть
07:15:51 ПП
User 60331718
А если глянешь но проекты самой организации на гитхабе, то даже найдёшь ycombinator на vue2
07:16:28 ПП
User 60331718
User 136935602
Кстати, вот кому там таск хороший был
Если кто сделает, дайте исходники посмотреть потом
07:16:56 ПП
User 136935602
А :) тогда без понятия :)
07:20:47 ПП
User 65484181
User 60331718
А если глянешь но проекты самой организации на гитхабе, то даже найдёшь ycombinator на vue2
https://github.com/vuejs
здесь?
не нахожу ycombinator
github.com/vuejs
vuejs has 30 repositories available. Follow their code on GitHub.
07:21:37 ПП
User 65484181
User 60331718
Так там в экзамплах же есть
в примерах небольшие компоненты
мне бы что-нибудь полноценное, с раутингом и т.д.
07:21:49 ПП
User 60331718
User 65484181
в примерах небольшие компоненты
мне бы что-нибудь полноценное, с раутингом и т.д.
https://github.com/vuejs/vue-hackernews-2.0
github.com/vuejs/vue-hackernews-2.0
HackerNews clone built with Vue 2.0, vue-router & vuex, with server-side rendering - vuejs/vue-hackernews-2.0
07:22:11 ПП
User 60331718
Крупнее, пожалуй, не встречал
07:22:33 ПП
User 65484181
спасибо
07:22:54 ПП
User 60331718
Я бы и рад свой показать, да только новичек я
07:23:49 ПП
User 136935602
Может пора написать FAQ по Vue? А то столько уже раз одни и те же вопросы задают
07:24:07 ПП
User 112715267
User 60331718
Если кто сделает, дайте исходники посмотреть потом
Я бы сделал, но мне конструктор над допилить
07:24:19 ПП
User 112715267
User 136935602
Может пора написать FAQ по Vue? А то столько уже раз одни и те же вопросы задают
вот это плюсик
07:25:04 ПП
User 136935602
Надо поискать платформу для сбора вопросов. У меня как раз два перелёта больших будет, могу поотвечать на вопросы
07:26:12 ПП
User 112715267
Но так как я больше бэкэндер, хочу написать удобную связку для RESTful бэка и Vue на фронте
07:26:54 ПП
User 136935602
А зачем?
07:27:01 ПП
User 112715267
То есть что-то типа микрофреймворка на бэк, который бы в удобном виде выдавал ответы (ну понятное дело, что json, но тип в формате нужном)
А для Vue плагин соответствующий
07:27:11 ПП
User 136935602
Поясню вопрос - в чем vue специфичность
07:28:01 ПП
User 112715267
постараюсь объяснить
07:28:04 ПП
User 112715267
но думаю, никто не поймет
07:28:06 ПП
User 112715267
как обычно
07:29:57 ПП
User 112715267
во-первых, vue-resource для запросов многим не нравится
во-вторых, тупо запросики - неинтересно и не очень удобно, хочется каких-то более простых конструкций. запросы типа есть, но обработку ошибок для каждого случая надо каждый раз писать, уходит время
07:30:26 ПП
User 112715267
а для того, чтобы реализовать такое, нужно и бэк соответствующе сконструировать
07:30:34 ПП
User 112715267
чтобы все четко по схеме было
07:30:40 ПП
User 136935602
Очень похоже на рельсы
07:30:47 ПП
User 136935602
Или на sails.js
07:31:39 ПП
User 112715267
ну вот что-то похожее
07:32:09 ПП
User 112715267
но все равно нюансы появляются в процессе, которые нужно решать
07:34:16 ПП
User 112715267
Прямо чтобы можно было boilerplate запилить
Поставил, и у тебя готовая связка бэка с vue и какой-нибудь hello world модуль лежит внутри
07:37:01 ПП
User 60331718
Ещё можно оберткунад materialize
07:38:46 ПП
User 112715267
Идей много, но все заняты чем-то все время
07:39:21 ПП
User 112715267
Как насчет собрать несколько человек и уделить свободную недельку какой-нибудь из идей?
07:40:18 ПП
User 136935602
А что такое свободная неделька?
07:40:30 ПП
07:40:36 ПП
User 112715267
хороший вопрос
07:40:43 ПП
User 112715267
ну я имею в виду, когда более-менее не нагружены чем-то
07:40:44 ПП
07:44:59 ПП
User 60331718
Не, я пас, я ппц как загружен
07:45:53 ПП
User 60331718
Хотя если кто-то начнёт, то я покамичу, попробую во всяком случае
07:46:03 ПП
07:46:33 ПП
User 60331718
User 112715267
А кто эти ребята?
07:46:39 ПП
User 60331718
Кстати кинь ссыль на групу
07:46:45 ПП
User 112715267
@javascript_jobs
07:46:54 ПП
User 175310
1488 members, heh
07:48:35 ПП
User 136935602
А про работу - тут время книжки найти бы почитать
07:58:05 ПП
User 60331718
Кто такой Козуля?
07:58:23 ПП
User 112715267
вы чее
07:58:27 ПП
User 112715267
козулю не знаете
07:58:40 ПП
User 60331718
Я просто из плюсов же в фронт пошел
07:59:53 ПП
07:59:56 ПП
08:00:06 ПП
User 112715267
фиолетовый слоник
08:00:09 ПП
User 112715267
спасибо, что не зеленый
08:40:09 ПП
User 40268779
чят, я закончил с презой про vue для завтрашнего митапа. пинайте
08:41:02 ПП
User 108562525
видео будет?
08:41:15 ПП
User 40268779
https://drive.google.com/file/d/0B0Gl6JmE8SsnOGNpei1SaWx0eHc/view?usp=sharing
drive.google.com/file/d/0B0Gl6JmE8SsnOGNpei1SaWx0eHc/view?usp=sharing&hl=en
08:43:06 ПП
User 108562525
preact забыл указать
08:43:21 ПП
User 108562525
на слайде с размером vue.gz
08:43:51 ПП
User 40268779
это не мой эксперимент со сжатием
08:43:56 ПП
User 40268779
я просто цитирую
08:43:59 ПП
User 60331718
git-stats/README.md at master · IonicaBizau/git-stats
https://github.com/IonicaBizau/git-stats/blob/master/README.md
github.com/IonicaBizau/git-stats/blob/master/README.md
git-stats - :four_leaf_clover: Local git statistics including GitHub-like contributions calendars.
08:44:22 ПП
User 112715267
боооже
08:44:28 ПП
User 112715267
вот не впадлу же кому-то было
08:44:46 ПП
User 60331718
Завтра себе поставлю, интересно сколько я там строк добавил удалил
08:46:30 ПП
User 108562525
User 40268779
https://drive.google.com/file/d/0B0Gl6JmE8SsnOGNpei1SaWx0eHc/view?usp=sharing
drive.google.com/file/d/0B0Gl6JmE8SsnOGNpei1SaWx0eHc/view?usp=sharing&hl=en
на 24 слайде на футболке не видно текста
08:47:45 ПП
User 40268779
User 108562525
на 24 слайде на футболке не видно текста
знаю (( не смог ничего придумать и забил пока
08:47:59 ПП
User 40268779
завтра когда QR код буду вставлять - подмажу тенюшку
08:48:28 ПП
User 108562525
неплохая презентация, кстати
08:48:50 ПП
User 108562525
User 40268779
знаю (( не смог ничего придумать и забил пока
можно слово just поменять на красный в цвет рубашки :D
08:49:32 ПП
User 40268779
спасибо
08:49:50 ПП
User 55423102
User 40268779
чят, я закончил с презой про vue для завтрашнего митапа. пинайте
Vuex туду?)
08:50:21 ПП
User 40268779
User 55423102
Vuex туду?)
ну тоже будет от загрузки завтра зависеть - то ли доделаю то ли оставлю для шуток
08:50:54 ПП
User 112715267
Что такое moment.js?
08:50:58 ПП
08:51:00 ПП
User 112715267
Везде вижу, а че зачем
08:51:06 ПП
08:51:20 ПП
08:51:29 ПП
User 552804
User 112715267
Везде вижу, а че зачем
Для дат и времени
08:51:34 ПП
User 40268779
User 112715267
Что такое moment.js?
тебе повезло что не ковырялся с таймзонами видимо
08:51:42 ПП
User 112715267
повезло видимо
08:52:37 ПП
User 60331718
User 40268779
тебе повезло что не ковырялся с таймзонами видимо
А это не ты вчера про воркеры, анугляр 2 рассказывал тут?
08:53:01 ПП
User 552804
User 40268779
тебе повезло что не ковырялся с таймзонами видимо
Vux поправь описку
08:53:12 ПП
User 40268779
User 60331718
А это не ты вчера про воркеры, анугляр 2 рассказывал тут?
я. ну так, поговорил немного )
08:53:51 ПП
User 552804
А это не описка....
08:53:51 ПП
User 60331718
User 40268779
я. ну так, поговорил немного )
Так, значит я тебе обещал кинуть стек уведомлений?
08:54:20 ПП
User 60331718
User 40268779
я. ну так, поговорил немного )
Тут кстати выше обсуждали какой-то твит
08:55:54 ПП
User 60331718
User 60331718
Тут кстати выше обсуждали какой-то твит
Вроде по твоей тематике, но чет его в линках найти не могу
08:55:57 ПП
User 40268779
User 60331718
Так, значит я тебе обещал кинуть стек уведомлений?
скинь, я что-то не помню. я просто интересовался как у vue с этим. про отложеные компоненты все ок - мне кто-то быстро кинул ссыль
08:57:06 ПП
User 60331718
так, я кому-то вчера обещал показать свою реализацию стека уведомлений, карочи вот :
https://gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
gist.github.com/Fl0pZz/bb25c47a282a6bfe62710a168d895a93
09:08:29 ПП
User 40268779
ок, спасибо, гляну!
09:27:31 ПП
User 112715267
Minimal Viable Product
09:27:43 ПП
User 112715267
Model-View-Presenter
09:27:54 ПП
User 112715267
Most Valuable Professional
10:09:49 ПП
10:09:54 ПП
User 112715267
Sass в jpg, js в png
10:09:55 ПП
10:10:10 ПП
User 112715267
упоротые художники
10:12:25 ПП
User 110083945
ну webpack же собирает все assets
10:14:14 ПП
User 112715267
я понимаю
10:14:26 ПП
User 112715267
но как бы
10:14:38 ПП
User 112715267
не js в png
10:14:41 ПП
User 112715267
а png в js
10:14:42 ПП
User 112715267
скорее
10:17:46 ПП
User 110083945
ну ребята чуть упоролись да, но если я сделаю ссылку из js на локальный файл, вебпак это поймет, и заберет оттуда файл в отдельную папку
10:17:47 ПП
User 110083945
как-то так
11:15:12 ПП
User 112715267
это понятно
11:15:18 ПП
User 112715267
но не в png же указывать файл на js)