Второй подход использования mounted
предпочтительнее остальных подходов. Единственное изменение, которое я бы предложил, - это использование created
hook вместо mounted
:
export default class Test extends Vue {
protected msg: string = '';
created() {
this.msg = 'Today\'s date ' + moment().format('YYYY/MM/DD');
}
}
Как правило, для простых свойств вы можете напрямую присвоить значение во время объявления. Используйте созданный, когда ваше задание не простое.
Кроме того, мы не используем конструкторы при написании компонента на основе классов. Причина в том, что по существу компоненты Vue.js основаны на объектах. Декоратор @Component
в конечном итоге заставляет компонент вести себя как объектно-ориентированный.
Кроме того, если вы посмотрите на методы жизненного цикла компонента Vue.js, то здесь нет места для конструктора. Исходные методы: beforeCreate
-> data
-> created
-> mounted
и так далее. Как может beforeCreate выполняться без фактического вызова конструктора ? Это действительно странно рассуждать.
Примечание 1 : для версии 3 Vue.js официальные компоненты на основе классов
предложил. Таким образом, это может измениться в ближайшем будущем.
Примечание 2 : TypeScript переместит объявление msg
в конструктор после компиляции, и Vue.js, похоже, хорошо с ним работает. Но это все еще не определено и его лучше избегать.