<div
v-for="item in splitComments"
:key="item.id"
class="comment-item"
>
...
<span
class="comment-text"
v-for="(str, i) in item.textList"
:class="{highlight: i%2}"
>
{{ str }}
</span>
</div>computed: {
splitComments() {
return this.comments.map(item => ({
...item,
textList: item.text.split(/(@\S+)/)
}))
}
} tar "6.0.2", а не tar "^6.0.2".Vue использует webpack, а webpack использует для запросов конкретные пути, которые ты указываешь при билде.publicPatch указывает на соответствующий сайт.webpack позволяет менять публичный путь динамически, присваивая его переменной __webpack_public_path__. Остаётся только при старте приложения получить путь к скрипту, например из document.currentScript, выделить из него нужный путь и присвоить его. /api откуда надо, а только потом заворачивал все запросы на index.html.vue-cli используется webpack dev server, и там есть proxy, через который вы можете направить запросы с /api на свои боевые или локальные сервера. const dateTimeLocal = reactive({
day: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
hour: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
minute: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
second: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
});computedсвойства в vue пересчитываются когда меняются их реактивные зависимости, которые участвовали в предыдущих вычислениях
computed к this.value - теперь он смотрит за изменениями this.value. Твоё же computed ни к чему не обращается, оно просто возвращает функцию, её содержимое и вызовы к computed не относятся.computed: {
validatedClass() {
return (input) => {
return {
'uk-form-success': this.wasValidated && !this.errors[input],
'uk-form-danger': this.wasValidated && this.errors[input],
}
}
}
},function someRandomFunction(input) => {
return {
'uk-form-success': this.wasValidated && !this.errors[input],
'uk-form-danger': this.wasValidated && this.errors[input],
}
}
computed: {
validatedClass() {
return someFunction.bind(this);
}
},computed будет обновлён только когда Vue пошлёт. В идеале, на самом деле, никогда.this.errors = {}.this.errors.email = [] - не реактивны.this.$set(this.errors, 'email', []) либо, что лучше, заранее:this.errors = {
email: '',
// ...
}this.$children - очень очень очень плохо. Просто используй props. Такая возможность наличествует только для крайне сложных случаев в компонентах библиотек. Точно не для твоего. bootstrap во втором только modal. Однако на деле нет никакой разницы, потому что все популярные системы сборки умеют в tree-shaking, т.е. оставляют в бандле только то, что используется. import(), будет лежать в отдельном js файле, который подгрузится только когда попросят.created() {
if(mobile){
this.touchStart = () => {}
}
}let touchStart;
if(mobile){
touchStart = function() {}
} else {
touchStart = function() {}
}
export {
touchStart
} import {touchStart, ...} from './helpers';
methods: {
touchStart,
...
}const touchMixin = {
methods: mobile ? {
touchStart() {}
} : {
touchStart() {}
}
} mixins: [touchMixin],