2. 组件 Component
2.1. vue中如何编写可复用的组件 (编写组件的原则)
- 以组件功能命名
- 只负责ui的展示和交互动画,不要在组件里与服务器打交道(获取异步数据等)
- 可复用组件不会因组件使用的位置、场景而变化。尽量减少对外部条件的依赖。
2.2. 如何让CSS只在当前组件中起作用?
在每一个Vue.js组件中都可以定义各自的CSS、 JavaScript代码。如果希望组件内写的CSS只对当前组件起作用,只需要在Style标签添加Scoped属性,即。
2.3. keep-alive是什么?
如果需要在组件切换的时候,保存一些组件的状态防止多次渲染,就可以使用 keep-alive 组件包裹需要保存的组件。
两个重要属性,include 缓存组件名称,exclude 不需要缓存的组件名称。
2.4. 如何在 Vue. js动态插入图片
对“src”属性插值将导致404请求错误。应使用 v-bind:src (简写:src)格式代替。
2.5. 父子组件的生命周期顺序
- 加载渲染过程:
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted - 子组件更新过程:父beforeUpdate->子beforeUpdate->子updated->父updated
- 父组件更新过程:父beforeUpdate->父updated
- 销毁过程:父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
3. Vuex
3.1. vuex的核心概念
- state => 基本数据
- getters => 从基本数据派生的数据
- mutations => 修改数据,同步
- actions => 修改数据,异步 (Action 提交的是 mutation,而不是直接变更状态)
- modules => 模块化Vuex
3.2. vuex是什么?怎么使用?哪种功能场景使用它?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理器,采用集中式存储管理应用的所有组件的状态,主要是为了多页面、多组件之间的通信。
Vuex有5个重要的属性,分别是 State、Getter、Mutation、Action、Module,由 view 层发起一个 Action 给 Mutation,在 Mutation 中修改状态,返回新的状态,通过 Getter暴露给 view层的组件或者页面,页面监测到状态改变于是更新页面。如果你的项目很简单,最好不要使用 Vuex,对于大型项目,Vuex 能够更好的帮助我们管理组件外部的状态,一般可以运用在购物车、登录状态、播放等场景中。
3.3. 多个组件之间如何拆分各自的state,每块小的组件有自己的状态,它们之间还有一些公共的状态需要维护,如何思考这块
- 公共的数据部分可以提升至和他们最近的父组件,由父组件派发
- 公共数据可以放到vuex中统一管理,各组件分别获取
4. Router
4.1. vue-router路由的两种模式
vue-router中默认使用的是hash模式
- hash模式, 带#。如:http://localhost:8080/#/pageA。改变hash,浏览器本身不会有任何请求服务器动作的,但是页面状态和url已经关联起来了。
- history模式,不带#, 如:http://localhost:8080/ 正常的而路径,并没有#。基于HTML5的 pushState、replaceState实现
4.2. vue-router如何定义嵌套路由
通过children 数组:
const router = new VueRouter({
routes: [
{
path: "/parentPage",
component: testPage,
children: [
{
path: "/childrenA",
component: childrenComponentA,
},
{
path: "/childrenB",
component: childrenComponentB,
},
],
},
{
// 其他和parentPage平级的路由
},
],
});
4.3. vue-router有哪几种导航钩子?
- 全局导航钩子:router.beforeEach(to,from,next)
- 组件内的钩子beforeRouteEnter (to, from, next) beforeRouteUpdate (to, from, next) beforeRouteLeave (to, from, next)
- 单独路由独享组件 beforeEnter: (to, from, next)
4.4. router的区别
- $route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
- $router是“路由实例”对象包括了路由的跳转方法,钩子函数等
4.5. 路由之间跳转的方式
- 声明式(标签跳转)
- 编程式( js跳转)
4.6. active-class是哪个组件的属性
vue-router 模块 的router-link组件