Michael
что делать не знаю, кури по ссылке или мб кто ещё ответит
Николай
Мне не нравиться
Николай
Это не красиво
Michael
Это нормально
только если у тебя хттп 2
Michael
иначе совсем плохо
ℝei
Смирись либо переписывай vue server renderer
Michael
это нукст
Michael
это не сср
Николай
То есть никак не победить?
ℝei
На ручном ssr можно все в 1 файл сунуть хотя. На нуксте хз
Michael
именно
Michael
так что, Коля, курси ссылку
Николай
Как на ручном засунуть?
Michael
победишь -- скажи как получилось.)
Michael
на ручном значит либо отпилить нукст, либо снова по ссылке
Michael
ибо я не не читал, но тема именно такая
Michael
после отпила жутко зависит от степени жёсткости проекта
Michael
можно изи, можно хайлоад продакшен. по второму варианту целая лекция
Michael
можно начать с ssr.vuejs.org
Dmytro
Объясните пжлст) У меня есть список людей, каждый человек имеет о себе информацию в виде объекта, имея при этом свой уникальный id. При клике на человека я хочу перейти на страницу этого человека. В итоге у меня есть дериктория provides/, внутри index.vue и _id.vue. Сейчас у меня реализация такова: при клике на нужного человека я из data-id беру его id (который записывается туда при генерации списка людей) и записываю это значение в state. При генерации страницы _id.vue я беру из state значение и на основе него генерирую информацию из объекта. Первое: я явно делаю это неправильно – как делать правильно? Второе: как реализовать возможность создания уникальной ссылки для человека? Например – provides/provider-id. Чтоб можно было как двигаться по истории, так и просто сразу перейти на нужного человека по ссылке, а не искать его в списке
Dmytro
Если это важно – использую Nuxt.js
Ilya
Объясните пжлст) У меня есть список людей, каждый человек имеет о себе информацию в виде объекта, имея при этом свой уникальный id. При клике на человека я хочу перейти на страницу этого человека. В итоге у меня есть дериктория provides/, внутри index.vue и _id.vue. Сейчас у меня реализация такова: при клике на нужного человека я из data-id беру его id (который записывается туда при генерации списка людей) и записываю это значение в state. При генерации страницы _id.vue я беру из state значение и на основе него генерирую информацию из объекта. Первое: я явно делаю это неправильно – как делать правильно? Второе: как реализовать возможность создания уникальной ссылки для человека? Например – provides/provider-id. Чтоб можно было как двигаться по истории, так и просто сразу перейти на нужного человека по ссылке, а не искать его в списке
почитай про vue-router. Это ответ на оба вопроса
Ilya
никакой стейт не будет нужен
Michael
почитай про vue-router. Это ответ на оба вопроса
гениально. а я два раза перечитал его сообщение и нифига не понял.
Ilya
он хочет сохранять текущего человека в стейт (зачем, не ясно) и вытягивать при рендере этого самого человека
Илья
привет, коллеги! думаю, как бы прикрутить svg-иконки. у нас SPA без SSR, задачи вставлять через CSS нету, так что выбираю между разными способами инлайнинга в HTML 1) есть https://github.com/visualfanatic/vue-svg-loader - он просто читает svg-файл, прогоняет через SVGO и рендерит во vue-компонент 2) есть https://github.com/kisenka/svg-sprite-loader - собирает файлы в спрайт, возвращает объект с айдишником символа, который можно использовать в <use> - но есть возможность дописать "генератор рантайма", чтобы возвращал сразу компонент (есть пример для реакта https://github.com/kisenka/svg-sprite-loader/blob/master/examples/custom-runtime-generator/svg-to-icon-component-runtime-generator.js - для ву получилось сделать аналогичный за 20 минут) То есть клиентский код у обоих может быть одинаковым: <template> <button>Hi, <Icon /></button> </template> <script> let Icon = require("icon.svg") export default { components: {Icon} } </script> в первом не нравится, что он превращает svg в render-функцию (нафига?) во втором не нравится, что SVGO можно подключить только сбоку, соответственно каждый svg будет парситься дважды. и, главное, не могу понять, есть ли у спрайта преимущества перед тупой вставкой в код, если мы не используем svg из CSS. вроде при тупой вставке на каждое использование иконки будет генериться N дом-узлов, а для спрайта - только 2 (<svg> и <use>). с другой стороны, use вроде как порождает кусок shadow dom, который кажется копируется из источника. при этом при тупой вставке мы можем легко раскрашивать из CSS отдельные куски SVG, а для спрайта - только все целиком (или я не прав?) короче, пока накидал свой лоадер на основе vue-svg-loader, он тупо передает содержимое svg строкой в функцию, которая уже создает из нее компонент, всталяя svg через domProps: {innerHTML: ...}, - вроде работает, но прежде чем начать его активно юзать, хочу посоветоваться с умными людьми =)
Michael
он хочет сохранять текущего человека в стейт (зачем, не ясно) и вытягивать при рендере этого самого человека
без перезагрузки страницы, конечно? Можно привязать вюекс к вьюроутеру. Подобное получается симпатично.
Ilya
конечно без перезагрузки
Michael
привет, коллеги! думаю, как бы прикрутить svg-иконки. у нас SPA без SSR, задачи вставлять через CSS нету, так что выбираю между разными способами инлайнинга в HTML 1) есть https://github.com/visualfanatic/vue-svg-loader - он просто читает svg-файл, прогоняет через SVGO и рендерит во vue-компонент 2) есть https://github.com/kisenka/svg-sprite-loader - собирает файлы в спрайт, возвращает объект с айдишником символа, который можно использовать в <use> - но есть возможность дописать "генератор рантайма", чтобы возвращал сразу компонент (есть пример для реакта https://github.com/kisenka/svg-sprite-loader/blob/master/examples/custom-runtime-generator/svg-to-icon-component-runtime-generator.js - для ву получилось сделать аналогичный за 20 минут) То есть клиентский код у обоих может быть одинаковым: <template> <button>Hi, <Icon /></button> </template> <script> let Icon = require("icon.svg") export default { components: {Icon} } </script> в первом не нравится, что он превращает svg в render-функцию (нафига?) во втором не нравится, что SVGO можно подключить только сбоку, соответственно каждый svg будет парситься дважды. и, главное, не могу понять, есть ли у спрайта преимущества перед тупой вставкой в код, если мы не используем svg из CSS. вроде при тупой вставке на каждое использование иконки будет генериться N дом-узлов, а для спрайта - только 2 (<svg> и <use>). с другой стороны, use вроде как порождает кусок shadow dom, который кажется копируется из источника. при этом при тупой вставке мы можем легко раскрашивать из CSS отдельные куски SVG, а для спрайта - только все целиком (или я не прав?) короче, пока накидал свой лоадер на основе vue-svg-loader, он тупо передает содержимое svg строкой в функцию, которая уже создает из нее компонент, всталяя svg через domProps: {innerHTML: ...}, - вроде работает, но прежде чем начать его активно юзать, хочу посоветоваться с умными людьми =)
я первое юзаю, доволен как слон. Код красивый.
Michael
насчёт нафига, ответ простой: вртуалдом
Michael
надо тебе через д3 точку поправить. одну из 47 тысяч
Michael
и... вот так.
Илья
я первое юзаю, доволен как слон. Код красивый.
ага, пасиб. а много иконок на странице бывает?
Stanislav
привет, коллеги! думаю, как бы прикрутить svg-иконки. у нас SPA без SSR, задачи вставлять через CSS нету, так что выбираю между разными способами инлайнинга в HTML 1) есть https://github.com/visualfanatic/vue-svg-loader - он просто читает svg-файл, прогоняет через SVGO и рендерит во vue-компонент 2) есть https://github.com/kisenka/svg-sprite-loader - собирает файлы в спрайт, возвращает объект с айдишником символа, который можно использовать в <use> - но есть возможность дописать "генератор рантайма", чтобы возвращал сразу компонент (есть пример для реакта https://github.com/kisenka/svg-sprite-loader/blob/master/examples/custom-runtime-generator/svg-to-icon-component-runtime-generator.js - для ву получилось сделать аналогичный за 20 минут) То есть клиентский код у обоих может быть одинаковым: <template> <button>Hi, <Icon /></button> </template> <script> let Icon = require("icon.svg") export default { components: {Icon} } </script> в первом не нравится, что он превращает svg в render-функцию (нафига?) во втором не нравится, что SVGO можно подключить только сбоку, соответственно каждый svg будет парситься дважды. и, главное, не могу понять, есть ли у спрайта преимущества перед тупой вставкой в код, если мы не используем svg из CSS. вроде при тупой вставке на каждое использование иконки будет генериться N дом-узлов, а для спрайта - только 2 (<svg> и <use>). с другой стороны, use вроде как порождает кусок shadow dom, который кажется копируется из источника. при этом при тупой вставке мы можем легко раскрашивать из CSS отдельные куски SVG, а для спрайта - только все целиком (или я не прав?) короче, пока накидал свой лоадер на основе vue-svg-loader, он тупо передает содержимое svg строкой в функцию, которая уже создает из нее компонент, всталяя svg через domProps: {innerHTML: ...}, - вроде работает, но прежде чем начать его активно юзать, хочу посоветоваться с умными людьми =)
Я галпом собираю спрайт из символов, потом вебпак инлайнит его в index.html при сборке. Использую с помощью компонента, в который передаю id символа, где он вставляется в use
Michael
ага, пасиб. а много иконок на странице бывает?
не оч. но теоритически может быть и больше. и будет..))
Илья
Я галпом собираю спрайт из символов, потом вебпак инлайнит его в index.html при сборке. Использую с помощью компонента, в который передаю id символа, где он вставляется в use
ага, ну вот это подход из svg-sprite-loader, над которым я голову ломаю +) а вы понимаете, зачем нужен спрайт? или у вас есть обращения из CSS?
Michael
надо тебе через д3 точку поправить. одну из 47 тысяч
тут косяк (д3 сам туда лазит), но теория та же
Николай
Решение
Илья
а, но у вас он физически инлайнится в HTML?
Stanislav
При сборке
Николай
Nuxt.config.js добавил render: {resourceHints: False }
Илья
ясно, но это вроде значит, что спрайт не попадет в кеш (а у svg-sprite-loader попадет, потому что он физически сидит в js-бандле и вставляется в дом уже при загрузке)
Николай
И теперь имею чистенький html с загрузкой пары файлов
Илья
ну типа если юзер часто ходит на сайт
Stanislav
Да оно там фигню будет весить. Отдельного запроса нет. Рендеринг страницы не тормозит
Anonymous
Michael
ну типа если юзер часто ходит на сайт
не совсем. допустим, юзер заходит дважды. А юзеров 170к в день.
Michael
гы.
Илья
ок, ну не суть +) короче, если я не хочу юзать svg в качестве фона из css, на спрайты можно забить и вставлять тупо в хтмл целиковый svg?
Илья
я вообще хотел это с автором svg-sprite-loader обсудить, он русский, но чет пока на связь не вышел, так что пристаю к вам )
Michael
ок, ну не суть +) короче, если я не хочу юзать svg в качестве фона из css, на спрайты можно забить и вставлять тупо в хтмл целиковый svg?
Точно можешь. Насчёт кеша -- закешивается всё вышеуказанное. В данном случае, весь жс до обновления.
Michael
на самом деле, в качестве компонента вью это будет немного менее ошибко-генерящее
Michael
(error-prone)
Michael
в большом приложении скажется на поддержке
Michael
с другой стороны, если у тебя верстак есть огненный, можно ему отдать в ксске)
Илья
не понял )
Илья
я сам довольно огненный 😄
Michael
не понял )
<my-svg /> куда глазастей, чем бэкграунды в отдельном ксс
Stanislav
+
Michael
значит, проще. значит, меньше вероятности запутаться и оставить багу рано или поздно.
Michael
другое дело, если ты угараешь по ксс и для тебя он приятнее кода. Тогда всё наоборот)
Илья
а, ну это да, но я как бы сразу решил, что расставлять иконки из css мы не хотим )
Michael
тогда не заморачивайся и грузи компонентом)
Michael
вот будут они слишком жирные, будешь складывать в отдельные подсборки и всё такое
Michael
в конце концов, вебпак плагин напишешь
Anonymous
Подскажите, что делать <component :is="view"></component> изменяя view - меняю отображаемый компонент. Если внутри одного компонента делаю операции, изменяю переменные - при возвращении к нему - данные теряются. Как быть?
Michael
там доки получше стали, кстати
Michael
мало инфы.
Michael
кого одного? другого?
Michael
возвращении куда? в маза рашу?
Илья
ок, тогда последний вопрос =) у svg vue loader есть вот такая строчка: https://github.com/visualfanatic/vue-svg-loader/blob/4921cf1069f59db5a0a30b169ee001db72bd1755/index.js#L22 это типа содержимое svg подается на вход vue-компайлеру, а он возвращает render-функцию. меня почему-то этот момент смутил - оно точно затормозит сборку, и, скорее всего, затормозит рантайм (потому что при рендере компонента весь svg будет собираться обратно из vnode-ов) мне захотелось тупо зафигачить содержимое через innerHTML, что я на коленке и сделал =) вопрос: есть ли у моего решения недостатки?
Michael
и какие переменные? в переменной view? каким образом?
Dmytro
никакой стейт не будет нужен
А как потом данные подгружать? Брать этот уникальный модификатор из href? Или каким-то пропсом передавать?
Ilya
не будет никакого href