vue_day06

目录

1第六天课程介绍

2路由模块封装

3使用router-link替代a标签实现高亮

问题:

高亮显示不想使用默认的白色,怎么设置颜色?

4自定义匹配的类名

​编辑5声明式导航-跳转传参

问题:

前两张图的跳转传参方式有什么区别?

这两个图片中的方式步骤?

7编程式导航-两种路由跳转方式

[先给按钮绑定@click="方法名"绑定点击事件,然后在方法里面实现这个this.router.push即可](#先给按钮绑定@click="方法名"绑定点击事件,然后在方法里面实现这个this.router.push即可)

​编辑

8面经基础版-案例效果分析

问题:

怎么配置二级路由?

问题:

这个标签的写法可以由什么更规范的替换?

9面经基础版-路由配置

10面经基础版-首页请求渲染

11面经基础版-传参(查询参数&动态路由)

12面经基础版-详情页渲染

13面经基础版-缓存组件

问题:

什么是组件名?

注意:

14基于VueCil自定义创建项目

15ESLint手动修正代码规范错误

16ESLint自动修正代码规范错误

17总结


1第六天课程介绍

2路由模块封装

步骤:将main.js中的路由配置一系列信息导入到index.js,在里面用到vue的,所以需要import Vue from 'vue' 最后export default router(供index.js使用)

3使用router-link替代a标签实现高亮

问题:

高亮显示不想使用默认的白色,怎么设置颜色?

4自定义匹配的类名

5声明式导航-跳转传参

问题:

前两张图的跳转传参方式有什么区别?

查询参数传参使用的是?动态路由传参用的是/,

查询参数接受值用的是route.query.值,动态路由是route.params.参数名

这两个图片中的方式步骤?

查询参数跳转传参:在<router-link>里面配置to路径,然后接受使用$route.query.值

动态路由传参使用的是先配置动态路由,就是在router包下文件里面的new router时里面的routes里面添加路径,然后配置to,最后的就是使用$route.params.参数名

6路由重定向

7编程式导航-两种路由跳转方式

先给按钮绑定@click="方法名"绑定点击事件,然后在方法里面实现这个this.$router.push即可

总结

注意name里面的动态路由传参使用的是params

8面经基础版-案例效果分析

问题:

怎么配置二级路由?

在routes里面使用childre:[]进行配置并且还得准备二级路由出口(在哪展示)

问题:

这个<a>标签的写法可以由什么更规范的替换?

<router-link>,使用这个才会自动有高亮显示(当鼠标点击的时候),记得配置to的使用里面不再需要#

9面经基础版-路由配置

10面经基础版-首页请求渲染

写在9里面了

11面经基础版-传参(查询参数&动态路由)

记得加上重定向

返回上一页,使用@click="$router.back()"

这个是防止出现页面没加载出来,点赞量这些常量就出现的情况

12面经基础版-详情页渲染

跟首页请求一样

13面经基础版-缓存组件

问题:

什么是组件名?

注意:

还有destroyed

14基于VueCil自定义创建项目

详细流程在

088-基于VueCli自定义创建项目_哔哩哔哩_bilibili

15ESLint手动修正代码规范错误

16ESLint自动修正代码规范错误

------保存时让 ESLint 自动修小错,但不让工具自动强行格式化代码,兼顾了 "错误修复的便捷性" 和 "代码格式的自主性"。

17总结

Vue 路由与工程化核心知识点深度总结

一、课程概述与 Vue 路由基础

在 Vue 前端开发体系中,路由是实现单页应用(SPA)页面跳转与状态管理的核心机制,而工程化则是保障大型项目可维护性、规范性的关键实践。本次课程围绕 Vue 路由的封装、使用、传参,以及工程化中的代码规范、项目创建等展开,以下是对各模块知识点的深度解析。

  1. 课程整体脉络与目标

本课程以 "Vue 路由实战 + 工程化规范" 为双主线,从路由模块的封装复用入手,逐步深入到路由导航、传参、组件缓存等进阶用法,同时结合 ESLint 代码规范与 VueCli 项目创建,全面覆盖 Vue 开发从 "功能实现" 到 "工程化落地" 的核心环节。通过理论讲解与问题驱动的方式,帮助开发者掌握 Vue 路由的底层逻辑与工程化实践的最佳路径。

二、路由模块封装:解耦与复用的关键

在中大型 Vue 项目中,路由模块的封装是提升代码可维护性的首要步骤,其核心目标是将路由配置从主逻辑中解耦,实现路由规则的集中管理。

2.1 路由封装的核心思路

分离关注点:将路由的定义(routes 数组)、路由实例创建(new VueRouter())与主应用(main.js)分离,分别维护在 router/index.js 等文件中。

支持模块化扩展:当项目需要新增页面或路由规则时,只需在路由模块中添加配置,无需修改主逻辑,降低耦合度。

2.2 封装的实操步骤

创建路由配置文件:在项目中新建 src/router/index.js,引入 Vue 和 VueRouter,定义路由规则数组 routes。

javascript

运行

// src/router/index.js

import Vue from 'vue'

import VueRouter from 'vue-router'

// 引入页面组件

import Home from '@/views/Home.vue'

import About from '@/views/About.vue'

Vue.use(VueRouter)

const routes = [

{

path: '/',

name: 'Home',

component: Home

},

{

path: '/about',

name: 'About',

component: About

}

]

const router = new VueRouter({

mode: 'history', // 可选hash/history模式

routes

})

export default router

在主应用中挂载路由:在 main.js 中引入封装好的路由实例,通过 Vue 实例的 router 选项注入。

javascript

运行

// src/main.js

import Vue from 'vue'

import App from './App.vue'

import router from './router'

new Vue({

router,

render: h => h(App)

}).$mount('#app')

2.3 封装的优势

代码结构更清晰,路由规则集中管理,便于团队协作维护;

支持路由的懒加载(后续可结合 import() 动态导入组件,优化首屏加载性能);

可在路由模块中统一处理路由守卫(全局前置守卫、后置守卫等),实现权限控制、页面埋点等全局逻辑。

三、使用 router-link 替代 a 标签实现高亮

在 Vue 路由中,router-link 是官方推荐的 "声明式导航组件",用于替代原生 <a> 标签,其核心优势是支持路由高亮、避免页面全量刷新,同时与 Vue 路由的底层机制深度集成。

3.1 router-link 的基础用法

html

预览

<!-- 替代 <a href="/about">关于我们</a> -->

<router-link to="/about">关于我们</router-link>

to 属性:等同于 a 标签的 href,但支持对象格式(如 to="{ name: 'About', params: { id: 1 } }"),用于传递路由参数;

渲染结果:默认会被渲染为 <a> 标签,可通过 tag 属性指定渲染为其他标签(如 tag="button" 渲染为按钮)。

3.2 路由高亮的默认行为与自定义

默认高亮逻辑:当 router-link 对应的路由是当前活跃路由时,Vue Router 会自动为其添加 router-link-exact-active(精确匹配)和 router-link-active(模糊匹配)类名,从而实现样式高亮。

问题:自定义高亮颜色

若不希望使用默认的白色高亮,可通过自定义 CSS 样式覆盖类名的颜色属性:

css

/* 精确匹配时的高亮样式 */

.router-link-exact-active {

color: #409EFF; /* 示例:设置为蓝色 */

font-weight: bold;

}

/* 模糊匹配时的高亮样式 */

.router-link-active {

color: #66B1FF; /* 示例:设置为浅蓝色 */

}

若需要修改默认类名,可在创建 VueRouter 实例时配置 linkActiveClass 和 linkExactActiveClass:

javascript

运行

const router = new VueRouter({

routes,

linkActiveClass: 'my-active', // 自定义模糊匹配类名

linkExactActiveClass: 'my-exact-active' // 自定义精确匹配类名

})

然后在 CSS 中针对 my-active 和 my-exact-active 编写样式即可。

四、自定义匹配的类名:精细化样式控制

除了高亮类名的自定义,Vue Router 还支持路由元信息(meta)与动态类名绑定,实现更精细化的样式与逻辑控制。

4.1 路由元信息(meta)的应用

在路由配置中,可通过 meta 字段添加自定义信息,用于判断路由的权限、类型等,进而控制样式或逻辑。

javascript

运行

const routes = [

{

path: '/admin',

name: 'Admin',

component: Admin,

meta: {

requiresAuth: true, // 标记需要权限验证

navType: 'primary' // 标记导航类型

}

}

]

结合路由守卫或组件内导航钩子,可根据 meta 信息动态添加类名:

javascript

运行

// 全局前置守卫中判断元信息

router.beforeEach((to, from, next) => {

if (to.meta.requiresAuth) {

// 需要权限,添加自定义类名

document.body.classList.add('auth-required')

} else {

document.body.classList.remove('auth-required')

}

next()

})

4.2 组件内动态绑定类名

在 router-link 或页面组件中,可通过 v-bind:class 结合路由实例的 currentRoute 属性,实现更灵活的类名控制:

html

预览

<router-link

to="/dashboard"

:class="{ 'dashboard-active': $route.path === '/dashboard' }"

>

仪表盘

</router-link>

<style scoped>

.dashboard-active {

background-color: #f0f0f0;

border-left: 3px solid #409EFF;

}

</style>

五、声明式导航 - 跳转传参:两种核心方式

在 Vue 路由中,"声明式导航" 指通过 router-link 实现的导航,传参主要有 ** 查询参数(Query)和动态路由参数(Params)** 两种方式,二者在用法、场景和 URL 表现上有明显区别。

5.1 查询参数(Query)

用法:通过 to 的对象格式传递 query 属性,例如:

html

预览

<router-link :to="{ name: 'User', query: { id: 1, name: 'John' } }">

用户详情

</router-link>

URL 表现:会将参数以 "?id=1&name=John" 的形式拼接在 URL 后,如 /user?id=1&name=John。

获取方式:在目标组件中通过 this.route.query.id 或 this.route.query.name 获取。

特点:参数会暴露在 URL 中,刷新页面参数不会丢失,适合传递非敏感的、可被分享的参数(如列表分页、搜索条件)。

5.2 动态路由参数(Params)

用法:需先在路由规则中定义动态参数,再通过 to 的对象格式传递 params 属性:

javascript

运行

// 路由规则定义

{

path: '/user/:id', // 定义动态参数id

name: 'User',

component: User

}

html

预览

<router-link :to="{ name: 'User', params: { id: 1 } }">

用户详情

</router-link>

URL 表现:参数会被嵌入 URL 路径中,如 /user/1。

获取方式:在目标组件中通过 this.$route.params.id 获取。

特点:参数不会暴露在 URL query 部分,URL 更简洁;但刷新页面时若路由未匹配会导致 404,适合传递与页面强关联的、无需分享的参数(如用户 ID、订单 ID)。

5.3 两种传参方式的区别与步骤对比

维度 查询参数(Query) 动态路由参数(Params)

路由规则定义 无需特殊定义 需在 path 中声明:参数名

URL 格式 /path?key=value /path/value

刷新页面 参数保留 需确保路由匹配,否则 404

适用场景 分页、搜索条件等 用户 ID、订单 ID 等

步骤对比:

查询参数传参步骤:

在 router-link 中通过 :to="{ query: { 键: 值 } }" 传递参数;

在目标组件中通过 this.$route.query.键 读取参数。

动态路由参数传参步骤:

在路由规则的 path 中通过 :参数名 声明动态参数;

在 router-link 中通过 :to="{ params: { 参数名: 值 } }" 传递参数;

在目标组件中通过 this.$route.params.参数名 读取参数。

六、编程式导航 - 两种路由跳转方式

除了声明式的 router-link,Vue 还支持编程式导航------ 通过 JavaScript 代码主动触发路由跳转,核心是利用 this.$router 实例的方法(push、replace、go 等)。

6.1 编程式导航的核心方法

this.$router.push(location, onComplete?, onAbort?)

作用:跳转到指定路由,向历史栈中添加新记录(点击浏览器返回按钮可回退)。

用法:

javascript

运行

// 字符串路径

this.$router.push('/user/1')

// 对象格式(含name和params)

this.$router.push({ name: 'User', params: { id: 1 } })

// 对象格式(含query)

this.$router.push({ path: '/user', query: { id: 1 } })

this.$router.replace(location, onComplete?, onAbort?)

作用:跳转到指定路由,但替换当前历史记录(点击返回按钮不会回退到上一个路由,而是更前的记录)。

适用场景:登录后跳转首页,避免用户回退到登录页。

this.$router.go(n)

作用:在历史栈中前进或后退 n 步(n 为正数前进,负数后退)。

示例:this.$router.go(-1) 等价于 "返回上一页"。

6.2 编程式导航的绑定步骤(以按钮点击为例)

给按钮绑定点击事件:在模板中为按钮添加 @click 事件,指向一个方法。

html

预览

<button @click="goToUser">跳转到用户页</button>

在方法中调用路由跳转方法:在组件的 methods 中定义方法,通过 this.$router 执行跳转。

javascript

运行

export default {

methods: {

goToUser() {

this.$router.push({ name: 'User', params: { id: 1 } })

}

}

}

七、面经基础版 - 案例效果分析与二级路由配置

在 Vue 项目的 "面试高频场景" 中,** 二级路由(嵌套路由)** 是实现页面组件嵌套的关键,而 "案例效果分析" 则是对路由功能的综合验证。

7.1 二级路由的配置步骤

二级路由的核心是路由规则的嵌套,即在父路由的 children 数组中定义子路由。

定义父路由与子路由规则:

javascript

运行

const routes = [

{

path: '/dashboard',

name: 'Dashboard',

component: Dashboard,

// 子路由(二级路由)

children: [

{

path: 'profile', // 注意:路径不带斜杠,会被拼接为/dashboard/profile

name: 'Profile',

component: Profile

},

{

path: 'settings',

name: 'Settings',

component: Settings

}

]

}

]

在父组件中添加 <router-view> 出口:子路由的组件会渲染到父组件的 <router-view> 中。

html

预览

<!-- Dashboard.vue(父组件) -->

<template>

<div class="dashboard">

<h1>仪表盘</h1>

<!-- 子路由组件的渲染出口 -->

<router-view></router-view>

</div>

</template>

导航到二级路由:可通过 router-link 或编程式导航跳转到子路由路径。

html

预览

<router-link to="/dashboard/profile">个人资料</router-link>

<router-link to="/dashboard/settings">设置</router-link>

7.2 案例效果分析的核心思路

以 "路由传参案例" 或 "嵌套路由案例" 为例,效果分析需从URL 变化、组件渲染、参数传递三个维度验证:

URL 变化:观察跳转时 URL 是否符合预期(如动态路由参数是否嵌入路径、query 参数是否拼接正确);

组件渲染:确认目标组件是否正确渲染,嵌套路由的子组件是否在父组件的 <router-view> 中显示;

参数传递:在目标组件中打印 this.route.query 或 this.route.params,验证参数是否传递成功。

八、面经基础版 - 路由配置与 <a> 标签的规范替换

路由配置的规范性直接影响项目的可维护性,而用 router-link 替换 <a> 标签是 Vue 路由的 "最佳实践" 之一。

8.1 路由配置的规范性原则

路由命名(name):每个路由应配置唯一的 name,便于编程式导航时通过名称跳转(避免硬编码路径);

组件引入:优先使用懒加载(import() 动态导入),优化首屏加载性能,例如:

javascript

运行

const Home = () => import('@/views/Home.vue')

const About = () => import('@/views/About.vue')

重定向(redirect):合理使用 redirect 处理旧路径兼容或默认页面跳转,例如:

javascript

运行

{

path: '/',

redirect: '/home' // 访问根路径时重定向到/home

}

8.2 <a> 标签的规范替换:用 router-link 替代的必要性

原生 <a href="/path"> 会导致页面全量刷新(单页应用的 "单页" 优势丧失),而 router-link 是 Vue Router 封装的组件,会拦截点击事件,通过 JS 实现 "无刷新跳转",同时支持路由高亮、参数传递等功能。

替换步骤:

找到页面中所有用于导航的 <a> 标签;

将 <a href="xxx"> 替换为 <router-link to="xxx">;

若需传递参数,将 href 中的参数拼接改为 router-link 的 query 或 params 传递方式。

九、面经基础版 - 首页请求渲染与数据驱动视图

在 Vue 项目中,"首页请求渲染" 是指在首页组件挂载时,发起异步请求获取数据,再将数据渲染到页面上,这一过程需结合生命周期钩子与路由导航守卫。

9.1 首页请求渲染的实现步骤

在组件中定义数据与请求方法:

javascript

运行

export default {

data() {

return {

list: [] // 存储请求到的数据

}

},

methods: {

fetchData() {

// 模拟异步请求

axios.get('/api/list').then(res => {

this.list = res.data

})

}

}

}

在生命周期钩子中调用请求方法:通常在 mounted 钩子中发起请求(组件挂载后执行)。

javascript

运行

mounted() {

this.fetchData()

}

结合路由守卫的优化:若首页需要在路由进入时就准备数据,可使用路由前置守卫或组件内导航守卫。

javascript

运行

// 组件内导航守卫

beforeRouteEnter(to, from, next) {

// 这里无法访问this,因为组件还未创建

axios.get('/api/list').then(res => {

next(vm => {

// vm是当前组件实例,请求成功后将数据赋值给vm.list

vm.list = res.data

})

})

}

9.2 数据驱动视图的核心逻辑

Vue 的 "数据驱动" 是指视图自动响应数据变化,当 list 数据通过请求更新后,模板中绑定的 list 会自动重新渲染:

html

预览

<template>

<div class="home">

<ul>

<li v-for="item in list" :key="item.id">{{ item.name }}</li>

</ul>

</div>

</template>

这种 "数据变化→视图自动更新" 的机制,是 Vue 作为 MVVM 框架的核心优势,避免了手动操作 DOM 的繁琐与易错。

十、面经基础版 - 传参 (查询参数 & 动态路由) 深度对比

在前文 "声明式导航传参" 的基础上,进一步对比查询参数与动态路由参数的底层机制、场景适配与注意事项。

10.1 底层机制差异

查询参数(Query):基于 URL 的查询字符串(?key=value)实现,本质是 "将参数附加在 URL 后",Vue Router 会解析 location.search 并将其映射到 $route.query。

动态路由参数(Params):基于 URL 的路径段(/path/value)实现,Vue Router 会解析 location.pathname,并将匹配到的动态段映射到 $route.params。

10.2 场景适配与注意事项

查询参数适用场景:

需保留历史记录,刷新页面参数不丢失(如搜索结果页,用户刷新后仍能看到相同搜索结果);

需支持参数分享(如将带 query 参数的 URL 发给他人,对方能看到相同内容);

注意事项:参数会暴露在 URL 中,敏感数据(如 token)不宜用此方式传递。

动态路由参数适用场景:

页面与参数强绑定(如 "用户详情页" 与 "用户 ID"),URL 需体现资源层级(如 /user/1 比 /user?id=1 更具语义);

需隐藏参数(如内部系统的流程 ID,无需用户感知);

注意事项:必须在路由规则中声明动态参数,否则跳转时会失败;刷新页面时需确保服务器配置了对应的路由(如 history 模式下的后端 fallback)。

十一、面经基础版 - 详情页渲染:从参数获取到数据展示

"详情页渲染" 是前端开发的高频场景,通常流程是 "获取路由参数→发起详情请求→渲染页面数据",以下是基于 Vue 路由的实现步骤。

11.1 详情页渲染的完整流程

以 "商品详情页" 为例:

定义动态路由规则:

javascript

运行

{

path: '/product/:id',

name: 'ProductDetail',

component: ProductDetail

}

在详情页组件中获取路由参数:

javascript

运行

export default {

data() {

return {

product: null // 存储商品详情数据

}

},

created() {

// 组件创建时获取参数并发起请求

const productId = this.$route.params.id

this.fetchProductDetail(productId)

},

methods: {

fetchProductDetail(id) {

axios.get(`/api/product/${id}`).then(res => {

this.product = res.data

})

}

}

}

渲染详情数据:

html

预览

<template>

<div class="product-detail" v-if="product">

<h2>{{ product.name }}</h2>

<p>{{ product.price }}</p>

<img :src="product.image" alt="商品图片">

</div>

</template>

11.2 组件复用与参数监听

若详情页组件因 "路由参数变化但组件未销毁"(如从 /product/1 跳转到 /product/2),需通过 watch 监听 $route 变化,重新发起请求:

javascript

运行

watch: {

'$route' (to, from) {

// 路由参数变化时,重新获取数据

const newId = to.params.id

this.fetchProductDetail(newId)

}

}

十二、面经基础版 - 缓存组件:提升性能与用户体验

在 Vue 中,** 组件缓存(<keep-alive>)** 可保留路由组件的状态,避免重复渲染与请求,常用于 "tabs 切换""表单页回退" 等场景。

12.1 组件缓存的基本用法

将 <router-view> 包裹在 <keep-alive> 中,即可缓存所有匹配的路由组件:

html

预览

<!-- App.vue 或布局组件中 -->

<keep-alive>

<router-view></router-view>

</keep-alive>

被缓存的组件会触发 activated 和 deactivated 生命周期钩子(替代 mounted 和 destroyed)。

12.2 缓存的条件控制

可通过 include 和 exclude 属性控制哪些组件被缓存:

html

预览

<!-- 只缓存ProductDetail和User组件 -->

<keep-alive include="ProductDetail,User">

<router-view></router-view>

</keep-alive>

<!-- 排除Profile组件,不缓存它 -->

<keep-alive exclude="Profile">

<router-view></router-view>

</keep-alive>

其中,include 和 exclude 接收组件名(即组件的 name 选项),因此需要为组件显式定义 name:

javascript

运行

export default {

name: 'ProductDetail', // 定义组件名,用于keep-alive匹配

// ...

}

12.3 问题:什么是组件名?

组件名是 Vue 组件的标识,用于:

<keep-alive> 的 include/exclude 匹配;

组件递归调用(自身调用自身时通过 name 识别);

开发者工具中组件的显示名称,便于调试。

组件名的定义方式:

javascript

运行

export default {

name: 'MyComponent', // 显式定义

// ...

}

若未显式定义 name,Vue 会根据组件文件名自动推断(如组件文件是 ProductDetail.vue,则默认 name 为 ProductDetail)。

注意事项:

组件名需保证唯一性,避免与其他组件重名;

若使用 <keep-alive> 的 include/exclude,建议显式定义组件名,避免自动推断的不确定性。

十三、基于 VueCli 自定义创建项目:工程化的起点

VueCli 是 Vue 官方的工程化脚手架工具,支持自定义项目配置(如包管理工具、ESLint 规则、路由模式等),是大型项目开发的基础。

13.1 自定义创建项目的步骤

安装 VueCli:确保已全局安装 @vue/cli(若未安装,执行 npm install -g @vue/cli)。

创建项目:执行 vue create my-project,进入交互式配置界面。

选择自定义配置:

包管理工具:选择 npm 或 yarn;

特性选择:勾选 "Router"(路由)、"Vuex"(状态管理,可选)、"ESLint"(代码规范)等;

ESLint 规则:选择 "ESLint + Standard config"(标准规范)或 "ESLint + Airbnb config"( Airbnb 规范);

额外功能:选择 "Linter / Formatter" 的触发时机(如 "保存时" 或 "提交时");

配置文件位置:选择将配置放在独立文件(如 .eslintrc.js)或 package.json 中。

等待项目创建与依赖安装,完成后进入项目目录 cd my-project,执行 npm run serve 启动开发服务器。

13.2 自定义配置的优势

按需选择技术栈(如是否需要路由、状态管理),避免项目冗余;

统一团队代码规范(通过 ESLint 规则),提升代码可读性与可维护性;

集成开发工具链(热更新、代码检查、构建优化等),提升开发效率。

十四、ESLint 手动修正代码规范错误

ESLint 是前端代码规范检查工具,能识别并提示代码中的语法错误、风格问题(如缩进、分号、引号等)。"手动修正" 是指开发者根据 ESLint 提示,逐个定位并修改问题代码。

14.1 ESLint 错误的识别方式

开发工具提示:在 VS Code 中,安装 ESLint 插件后,代码中的规范问题会以 "波浪线" 标出, hover 后可查看错误原因。

命令行检查:执行 npm run lint(或 vue-cli-service lint),会在终端列出所有 ESLint 错误,包含文件路径、行号、错误原因。

14.2 手动修正的步骤

以 "缺少分号""引号使用不统一" 为例:

定位错误:根据终端提示或编辑器波浪线,找到问题代码所在的文件和行号。

分析错误原因:例如 ESLint 提示 Missing semicolon(缺少分号),或 Strings must use singlequote(字符串必须使用单引号)。

修改代码:在对应位置添加分号,或把双引号改为单引号。

验证修正结果:保存文件后,观察编辑器波浪线是否消失,或再次执行 npm run lint 确认错误已修复。

14.3 手动修正的优势与适用场景

优势:开发者可深入理解代码规范的细节,逐步养成规范编码的习惯。

适用场景:错误数量较少、需要针对性学习规范细节的场景;或团队对代码风格有特殊定制,自动修复可能不符合预期的场景。

十五、ESLint 自动修正代码规范错误

为提升效率,ESLint 支持自动修复(--fix 参数),可批量修正大部分可自动修复的规范错误(如缩进、分号、引号等)。

15.1 自动修正的触发方式

命令行自动修复:执行 npm run lint -- --fix(或 vue-cli-service lint --fix),ESLint 会自动修改项目中所有可修复的规范错误。

编辑器保存时自动修复:在 VS Code 的配置文件(.vscode/settings.json)中添加以下配置,实现 "保存文件时自动触发 ESLint 修复":

json

"editor.codeActionsOnSave": {

"source.fixAll.eslint": true

}

15.2 自动修复的适用范围

可自动修复:缩进错误、分号缺失、引号不统一、多余空格等风格类问题。

不可自动修复:语法逻辑错误(如变量未定义)、需要人工判断的设计问题(如函数命名不规范)等,仍需手动修正。

15.3 自动修复与手动修正的配合策略

先通过自动修复处理所有可批量修正的风格问题;

再针对剩余的手动错误(如逻辑错误、命名问题)进行人工修正;

这种 "自动 + 手动" 的组合,可大幅提升代码规范的落地效率。

十六、总结:Vue 路由与工程化的核心价值

通过对上述知识点的系统学习,我们可以清晰看到:

Vue 路由是单页应用的 "骨架",从基础的导航、传参,到进阶的嵌套路由、组件缓存,其设计围绕 "用户体验(无刷新跳转)" 与 "开发效率(声明式、编程式导航)" 展开,掌握路由的各类用法是构建复杂 Vue 应用的基础。

工程化实践(ESLint 代码规范、VueCli 项目创建)是项目 "从能用到好用" 的关键,它保障了代码的可维护性、团队协作的一致性,以及项目的长期可迭代性。

在实际开发中,需将路由的灵活运用与工程化的严格落地相结合 ------ 用路由实现页面的优雅跳转与数据传递,用 ESLint 和 VueCli 保障代码质量与开发效率,最终构建出体验流畅、维护成本低的 Vue 前端应用。同时,要持续关注社区最佳实践(如 Vue Router 4 的新特性、ESLint 新规则),不断迭代自己的技术栈,以适应前端领域的快速发展。

相关推荐
恋猫de小郭5 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅11 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606112 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了12 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅12 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅13 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅13 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment13 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅13 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊13 小时前
jwt介绍
前端