vue尚品汇商城项目-day01【5.路由组件的搭建】

简介: vue尚品汇商城项目-day01【5.路由组件的搭建】

在这里插入图片描述
@[toc]

5.路由组件的搭建

安装vue-router命令:

 npm install --save vue-router@3.5

在上面分析的时候,路由组件应该有四个:Home、Search、Login、Register

  • components文件夹:经常放置的是非路由组件(共用的全局组件)
  • pages|views文件夹:经常放置路由组件

可能报错:

问题1:安装路由时报错如图

image.png

原因:

2022年2月7日以后,vue-router的默认版本,为4版本。
其中vue-router4,只能用在vue3中
而vue-router3,只能用在vue2中。
如果把vue-router4强行安装到vue2中,会报错如图,所以我们应安装vue3.x版本。

问题2,配置路由后启动项目报错如图

image.png

项目目录结构为:

image.png

路由配置代码为:

//引入相应的路由组件
import Search from '@/pages/search';
import Login from '@/pages/login';
import Register from '@/pages/register';
import Home from "@/pages/hemo/Home";

原因:引入组件路径没引入完全,比如import Search from '@/pages/search'这个,它引入的是目录文件夹,而不是引入最终的Search组件,也就是路径填写少了,实际应该为:import Search from '@/pages/search/Search'才对。

问题3:启动报错

image.png

答案:出现该情况的原因是vue-router安装的版本太高,一般vue2的项目对应的版本是vue-router@3版本就可以。

5.1配置路由

项目当中配置的路由一般放在router文件夹中

5.2总结

路由组件与非路由组件的区别:
(1)路由组件一般放置在pages|views文件夹中,非路由组件一般放置在components文件夹中。
(2)路由组件一般需要在router文件夹中进行注册(使用的即为组件的名字),非路由组件在使用的时候,一般都是以标签的形式使用。
(3)注册完路由,不管是路由组件还是非路由组件,身上都有 $route和$router属性。
(4)
$route:一般是获取路由信息(比如路由的路径、query参数、params参数等)。

$router:一般进行编程式导航进行路由跳转(比如push|replace)。

5.3路由的跳转

路由的跳转有两种形式:
声明式导航router-link,可以进行路由的跳转
编程式导航push|replace,可以进行路由的跳转

编程式导航:声明式导航能做的,编程式导航都能做,但是编程式导航除了可以进行路由跳转,还可以做一些其他的业务逻辑。

问题1:编程式路由、声明式路由是什么?

答案

  • 声明式路由导航:直接写在html中,结构简单使用方便,但是只能放在\标签中使用结合to属性使用,to属性代表往哪跳,\标签会将路由转成\标签,通过点击跳转路由,因此局限性也非常大。
  • 编程式路由导航:需要写在js中,结构也不算复杂,优势在于非常灵活,不受固定标签限制,可以在任意情景下转跳路由。

问题2:如何选择编程式路由、声明式路由呢?

答案:“声明式导航”只能进行路由跳转,而编程式导航除了可以完成路由跳转外,还能做一些业务逻辑处。比如登录页输入用户名+密码,这里当点击“登录”按钮时肯定不能直接跳转页面,得ajax向后端发请求验证用户名和密码是否正确等,这时就需要使用编程式路由了。

问题3:编程式导航中push和replace有啥区别?

答案

  • push模式是栈的常规模式,可以回到上一级,会留下痕迹
  • replace模式是替换模式,会替换掉栈顶的路由,回不到上一级,不会留下痕迹(无痕模式),适用于登录后,不需要重新回到登录页。

问题4:想实现url默认输入https://localhost:8080就能自动跳转到首页,代码如下,但是无效

router文件夹下的index.js文件

//引入vue-router路由插件
import VueRouter from "vue-router";
//引入Vue
import Vue from "vue";
Vue.use(VueRouter);

//引入路由组件
import Register from '@/pages/Register'
import Login from '@/pages/Login'
import Home from '@/pages/Home'
import Search from '@/pages/Search'

//配置路由
export default new VueRouter({
   
    routes:[
        {
   
            path: '/home',
            component: Home,
        },
        {
   
            path: '/search',
            component: Search,
        },
        {
   
            path: '/register',
            component: Register,
        },
        {
   
            path: '/login',
            component: Login,
        },
        //重定向,在项目跑起来的时候,访问/,立马让他定向到首页
        {
   
            path: '*',
            redirect: Home,
        }
    ]
})

答案:redirect属性后面跟的应该是路径而不是组件的名称,所以应该修改为:redirect: “/home”就是正确答案。

本人其他相关文章链接

1.vue尚品汇商城项目-day00【项目介绍:此项目是基于vue2的前台电商项目和后台管理系统】
2.vue尚品汇商城项目-day01【1.vue-cli脚手架初始化项目生成文件的介绍】
3.vue尚品汇商城项目-day01【2.vue-cli脚手架初始化项目的其他配置】
4.vue尚品汇商城项目-day01【3.项目路由的分析】
5.vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】
6.vue尚品汇商城项目-day01【5.路由组件的搭建】
7.vue尚品汇商城项目-day01【6.Footer组件的显示与隐藏】
8.vue尚品汇商城项目-day01【7.路由传参】
9.vue尚品汇商城项目-day01【8.路由跳转与传参相关面试题】

目录
相关文章
|
6天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
6天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
6天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
6天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
5天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
7天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
5天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1050 0
|
7天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
12天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发