Я новичок в Vue и сумел сделать свое первое приложение с некоторыми глюками, но пока мне это очень нравится.Я использовал видеоурок, который начал с создания проекта vue-cli, который, как оказалось, немного отличается от веб-пакета.
Я создал проект, проект делает в основном то, что должен сейчас, яЯ пытаюсь провести некоторый рефакторинг, который включает в себя СУШКУ кода.
На каждой странице я хотел бы получить доступ к переменной, хранящейся в файле cookie, которую я делал, сохраняя и читая на HomeComponent в разделе скрипта, которыйработает как обещано.
<script>
import MenuComponent from '@/components/MenuComponent.vue'
import Typewriter from '@/components/vue-type-writer.vue'
export default {
name: 'HomeComponent',
components: {
MenuComponent,
Typewriter
},
prop:{
isPlaying: Boolean,
username: String,
currentSound: Object
},
data() {
return{
currentSound: null,
isPlaying: false,
username: ''
}
},
methods:{
clickButton() {
this.msg= 'test 2'
},
toggleSound(){
var a = this.currentSound;
if (a.paused) {
a.play();
this.isPlaying = true;
} else {
a.pause();
this.isPlaying = false;
}
},
getCookieInfo(){
var value = "; " + document.cookie;
var parts = value.split("; weegreename=");
if (parts.length == 2)
this.username = parts.pop().split(";").shift();
else this.username = '';
},
seveFormValues (submitEvent) {
this.username = submitEvent.target.elements.name.value;
this.$refs.audio1.pause();
this.$refs.audio2.play();
var expires = "";
var days = 31;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = "weegreename=" + (this.username || "") + expires + "; path=/";
}
},
mounted(){
this.isPlaying = true;
this.getCookieInfo();
if (this.username) this.currentSound = this.$refs.audio2;
else this.currentSound = this.$refs.audio1;
this.currentSound.play();
}
}
</script>
Теперь на каждой подстранице я хотел бы получить доступ к методу getCookieInfo()
для проверки идентификатора имени пользователя.
Я пытался добавить это вВ главном разделе сценария App.vue в файле main.js
new Vue({
router,
render: h => h(App),
methods: {
//here the getCookieInfo code from above
}
}).$mount('#app')
был создан новый компонент с методами, а затем попытался получить к ним доступ в главном приложении через componentname.method, как показано ниже.
import CookieComponent from '@/components/CookieComponent.vue'
export default {
// prop:{
// isToggled: Boolean
// },
components: {
MenuComponent,
CookieComponent
},
data() {
return{
isToggled: false
}
},
methods:{
clickToggle() {
this.isToggled = !this.isToggled;
},
},
mounted(){
CookieComponent.getCookieInfo();
}
}
Я не знаю сейчас лучший подход, и я узнаю больше в будущем, но этот проект чувствителен ко времени - я решил изучить vue, сделав простой сайт дляу клиента:)