vueeach_VUE高频问题(必问)
vueeach_VUE⾼频问题(必问)1.关于vue的⽣命周期
看官⽹的图:
2.vue的双向数据绑定+实现
var obj = {}
Object.defineProperty(obj, 'txt', {
get: function () {
return obj;
中国好书推荐排行榜},
set: function (newValue) {
边的组词
}
})
document.addEventListener('keyup', function (e) {
< = e.target.value新手如何买基金
const b = []
b.push(1)
console.log(b);
})
实现效果:
3.vue⽗⼦组件的相互通信
⽗亲组件传值给⼦组件:
⽗组件在data⾥⾯的数据:
⼦组件获取⽗组件⾥⾯的data:
props:['menuList','footerBgcolor'],
⼦组件在html中直接使⽤:
class="footer" :>
class="footer-menu" v-for="(menu, index) in menuList" :key="index"> @click.native="selectMenu(menu)" :to="menu.path">{{menu.title}}
⼦组件向⽗组件传值:
⼦组件添加触发函数,也可以是⽣命周期函数:
@click.native="selectMenu(menu)"
在⼦组件的⽅法函数中加⼊:
this.$emit('changeTitle',menu);//第⼀个参数
在⽗组件接受:
class="content" @changeTitle="changeTitle" >
在⽗组件的data中定义接受的变量:
data(){
return{
selectMenu:{},
}
}
在⽗组件实现⽅法:
changeTitle(menu){
// console.log("接收menu");
this.selectMenu = menu;
// console.log("存⼊selectmenu");
},
⽗组件就能通过selectmenu直接调⽤数据
璀璨人生的插曲五大湖4.vue⾃定义组件
全局组件:
Vueponent('component-a', { /* ... */ })
Vueponent('component-b', { /* ... */ })
Vueponent('component-c', { /* ... */ })
new Vue({ el: '#app' })
它们在注册之后可以⽤在任何新创建的 Vue 根实例 ( newVue) 的模板中;
id="app">
局部组件:
new Vue({
el: '#app',
components: {
'component-a': ComponentA,国考调剂是怎么调剂的
'component-b': ComponentB
}
})
导⼊组件:
import ComponentA from './ComponentA.vue'
export default {
components: {
ComponentA
},
// ...
}
5.vuex原理
1.⾸先,store是个类, `
2.类⾥⾯有构造⽅法,我们通过向构造⽅法添加各种属性,创建store对象;
3.关键触发函数:dispath()触发actions;commit()触发mutation;
4.vue开始创建时,先判断store对象的存在,如果存在,将store实例,通过vue.mixin,在beforCreated阶段挂载就将vue原型添加$store 指向store实例,
5.在vue中就能通过$store的各种⽅法操作vuex;
6.vue-router原理
1.vue开始创建时,先判断store对象的存在,如果存在,将store实例,通过vue.mixin,在beforCreated阶段挂载就将vue原型添加$router指向router实例,
2.实现两个组件vue。component(“router-view”,{
})通过监听路由的变化,获得hash,通过hash得到对应的compnoent,然后渲染出来;
component(“router-link”,{
})将全部内容替换为
to="/">Home转为 href="/">Home
7.(预渲染和SSR)关于vue的seo问题
(详细看vue 官⽹)
seo关系到⽹站排名, vue搭建spa做前后端分离不好做seo, 可通过其他⽅法解决:
SSR服务端渲染: 将同⼀个组件渲染为服务器端的 HTML 字符串.利于seo且更快.
vue-meta-info, nuxt, prerender-spa-plugin页⾯预渲染等
8.监听watch和计算属性computed
computed:被多个值影响:
使⽤⽅法:
computed: {
fullName: function () { //fullname 受firstname和lastname的值的影响;
return this.firstName + ' ' + this.lastName
}
计算属性是基于它们的响应式依赖进⾏缓存的。只在相关响应式依赖发⽣改变时它们才会重新求值。这就意味着只要firstname和lastname 的值 还没有发⽣改变,多次访问 fullName计算属性会⽴即返回之前的计算结果,⽽不必再次执⾏函数。
watch:⼀个值影响多个值
watch: {
// 如果 `question` 发⽣改变,这个函数就会运⾏
question: function (newQuestion, oldQuestion) {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。