Rafael 🌵
прототипно или обобщенное какое-нибудь, не?
Расширение через миксины типо
Bohdan
субъектное?
Bohdan
Субъектно-ориентированное программирование — Википедия https://ru.m.wikipedia.org/wiki/%D0%A1%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
CherryTea
Я точно засейвил, даже линк поменялся. Я тогда хз
я сделал более конкретный пример. Пытаюсь сделать чтобы работало вот так: https://playcode.io/53407?tabs=console&app.html&script.js&output Но router был вложенным как в первом примере (т.е. child был вложен в парента в роутере в свойство children)
Marseille
гайс, помогите идиоту в vs code подсветку синтаксиса починить на .vue файлах
Michael
конфиг знаешь как открыть?
Marseille
использую плагин vetur
Marseille
вкл/выкл плагин и вперёд
не помогло, как и переустановка
Michael
и что не работает?
Michael
ищи там ветур, меняй в своем конфиге, сохраняй, профит
Marseille
Подсветка
Michael
наверняка выключена
CherryTea
а... а почему так нельзя оставить?
во первых надо каждый раз набирать весь путь для всех дочерних компонентов, во вторых строить брендкампы по такому плоскому массиву сложнее
Marseille
Вроде есть все
Alexey
https://jsfiddle.net/ku6eo56s/2/
Alexey
Было бы неплохо, чтобы сеньоры заценили
CherryTea
https://jsfiddle.net/ku6eo56s/2/
NOT BAD, это работает, но меня немного смущает необходимость иметь вот такого чилда { path: '/', component: Parent },
CherryTea
https://router.vuejs.org/en/essentials/named-views.html#nested-named-views мб это направит)
ога, попробовал с ним, все равно плоский получается. У меня появилась идейка, покажу попозже
Alexander ‎=̂• ̺ •̂=‎
Парни, есть интересная задача - отображать версию приложения/билда. Можно как-то это автоматизировать с webpack'ом? Куда писать версию, как автоматом инкрементить билд? Как на vue это цеплять и выводить внутри компонента? Есть готовые решения? Гуглил, но видимо не правильно.
Alex
package.json?
Alex
тогда так можно // webpack.config.js plugins: [ new webpack.DefinePlugin({ VERSION: JSON.stringify(require("package.json").version) }) ] // any-module.js console.log("Version: " + VERSION);
Alexander ‎=̂• ̺ •̂=‎
Alexander ‎=̂• ̺ •̂=‎
тогда так можно // webpack.config.js plugins: [ new webpack.DefinePlugin({ VERSION: JSON.stringify(require("package.json").version) }) ] // any-module.js console.log("Version: " + VERSION);
Да, отличное решение, спасибо. Но больше вопрос про автоинкремент. То есть оно где-то само должно сторить версию билда, инкрементить ее. И можно чтобы оно само инкрементило патч-версию релиза по semver.
Alex
Ручками править) чтобы по семверу
Alex
откуда автоинкримент поймет что у вас мажор меняется
Alexander ‎=̂• ̺ •̂=‎
откуда автоинкримент поймет что у вас мажор меняется
Ну мажор-минор руками, а по умолчанию чтобы патч инкрементило
Alexander ‎=̂• ̺ •̂=‎
Ручками править) чтобы по семверу
Я понимаю как это должно быть, но не понимаю как это корректно реализовать 😞
Alexander ‎=̂• ̺ •̂=‎
Или в package.json скрипты разные сделать. Мажор билд, минор билд, билд.
Ivan
Ребят, помогите разобраться с комьютед методами, не могу понять вот есть код, отрабатывает если я только тыкаю на компоненту в vue dev tools <template> <div class="container"> {{this.randomBird.name}} </div> </template> <script> import axios from 'axios'; export default { data() { return { allBirds: {}, randomBird: {} } }, created() { axios.get(`http://server3.lpm.org.ru/birds/birds.json`).then(res => { this.allBirds = res.data; }) }, computed: { getRandomBird() { this.randomBird = this.allBirds.birds[Math.floor(Math.random() * this.allBirds.birds.length)]; } }, } </script>
Alexey
Для начала.
Alexey
getRandomBird в шаблоне не используется же
Ivan
окей, но вызывается по прежнему по клику
Ivan
ну вот что вы написали
Alexey
Я еще ниже тоже написал...
Ivan
а если перенести getRandomBird в методы и вызывать getRandomBird() то всё ок
Ivan
но видимо это не правильно
Ivan
так и должно быть
а зачем тогда computed, он не может вычисляться сразу после того, как страница загрузилась?
Alexey
а зачем тогда computed, он не может вычисляться сразу после того, как страница загрузилась?
компютед постоянно вычисляет, а у вас получение данных только при создании
Alexey
а зачем тогда computed, он не может вычисляться сразу после того, как страница загрузилась?
более того, компютед у вас постоянно вычисляет getRandomBird, а оно нигде не используется.
Alexey
а зачем тогда computed, он не может вычисляться сразу после того, как страница загрузилась?
И компютед это готовый аттрибут, а вы в нём присваиваете аттрибуту дата данные. Зачем так?
Туся
к тому же computed должен возвращать значение, а у вас там присваивание просто. И пересчитывается computed только когда возвращаемое значение могло измениться
Ivan
ребят, как лучше то сделать
Alexey
ребят, как лучше то сделать
https://ru.vuejs.org/v2/api/#computed
Stanislav
В this.allBirds нету birds при инициализации компоненты
Michael
чистой функцией без побочных эффектов.
Michael
Функцией, берущей аргумент и вычисляющей результат без изменения окружения.
Ivan
а что надо-то?
есть массив объектов, нужно отрендерить случайный из них
Michael
ребят, как лучше то сделать
Что требуется, да?)
Michael
Michael
ща
Alexey
есть массив объектов, нужно отрендерить случайный из них
<template> <div class="container"> {{getRandomBird.name}} </div> </template> computed: { getRandomBird() { return this.allBirds.birds[Math.floor(Math.random() * this.allBirds.birds.length)]; } },
Michael
в дэйту пишешь randomIndex: -`
Michael
-1
Michael
<template> <div class="container"> {{getRandomBird.name}} </div> </template> computed: { getRandomBird() { return this.allBirds.birds[Math.floor(Math.random() * this.allBirds.birds.length)]; } },
я бы в дэйту вынес индекс, а в компьютед ссылкался на него, если определён или, если нет, то вычислял бы его.
Michael
т.к. любой пересчёт дёрнет новый рандомный элемент
Michael
не уверен, что ему такое надо будет
Michael
```
Michael
computed: { getRandomBird() { return this.allBirds.birds[(Math.random() * this.allBirds.birds.length)|0]; } },
Michael
Так ещё сократить можно.