Vue电商项目--项目路由

项目路由分析

vue-router
路由分为KV

node平台(并非语言)
对于后台而言:K即为URL地址   V即为相应的中间件

前端路由:
K即为URL(网络资源定位符)
V即为相应的路由组件

路由的一个分析
确定项目结构顺序:上中下 -----只有中间部分的V在发生变化,中间部分应该使用的是路由组件
2个非路由组件|四个路由组件
两个非路由组件:Header 、Footer
路由组件:Home、Search、Login(没有底部的Footer组件,带有二维码的)、Register(没有底部的Footer组件,带二维码的)

Header与Footer非路由组件完成

创建非路由组件(2个:Header、Footer)

非路由组件使用分为几步:
第一步:定义
第二步:引入
第三步:注册
第四步:使用

非路由组件的结构的搭建:
前台项目的结构与样式不需要自己写的,老师准备好了
辉洪老师静态页面:
结构 + 样式 +图片资源

项目采用的less样式,浏览器不识别less语法,需要一些loader进行处理,把less语法转换为CSS语法

1:安装less less-loader@5
切记less-loader安装5版本的,不要安装在最新版本,安装最新版本less-loader会报错,报的错误setOption函数未定义

2:需要在style标签的身上加上lang="less",不添加样式不生效

这里我在写的时候,明明引入了重置网页默认样式,但是没有效果?

解决方法就是: 把app.vue里的css删掉 

而Footer组件也是一样就是拆分就可以了

 完成 

完成路由组件的搭建

安装路由

npm install [email protected]     如果@3的话可能安装的是3.6以上的版本,建议直接输入版本号

创建路由组件【一般放在views|pages文件夹】 

配置路由,配置完四个路由组件

 

 总结

路由组件与非路由组件的区别?

1.路由组件一般放置在pages/views文件夹,非路由组件一般放置componets文件夹中

2.路由组件一般需要在router文件夹中进行注册(使用的即为组件的名字),非路由组件在使用的时候,一般都是以标签的形式使用

3.注册完路由,不管路由路由组件,还是非路由组件身上都有$route,$router属性

$route:一般获取路由信息【路由,query,params等等】

$router:一般进行编程式导航进行路由跳转【push|replace】

路由的跳转有俩个形式:

声明式导航router-link,可以进行路由的跳转

编程时导航push|replace,可以进行路由的跳转

编程式导航:声明式导航能做到,编程时导航都能实现

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

路由元信息的使用

就是使用Footer组件显示和隐藏

显示隐藏组件:v-if|v-show

Footer组件:在Home,Search显示Footer组件

Footer组件:在登录,注册时候隐藏

这种方法并不是最终的解决方案,如果有100个,那不就要写100个了吗。这肯定不行的

 配置的路由的时候,可以给路由添加路由元信息【meta】,路由需要配置对象,它的key不能瞎写,乱写

路由传递参数

第一种:字符串形式

这里我遇到了一个问题就是重定向的正则表达式*,把/searach覆盖了/home,因此无法实现$router.push

第二种:模板字符串

 但这俩种方式并不常用,对象的写法常用

先要到router.js里面起一个name

 路由传递参数相关面试题

1.路由传递参数(对象写法)path是否可以结合params参数一起使用?

答:路由跳转传参的时候,对象的写法可以是name,path形式,但是需要注意的是,path这种写法不能与params参数一起使用

2.如何指定params参数可传可不传?

如果路由要求传递params参数,但是你就不传递params参数,发现一件事情,URL会有问题的

如何指定params参数可以传递,或者不传递,在配置路由的时候,在占位的后面加上一个问号【parms可以传递或者不传递】

http://localhost:8080/#/?k=QWE

http://localhost:8080/#/search?k=QWE

3.params参数可以传递也可以不传递,但是如果传递的是空串,如何解决?

使用undefined解决:params参数可以传递,不传递(空的字符串)

 4.路由组件能不能传递props数据?

 

但是这个布尔值的写法只能传递一个params参数

 

对象写法,不常用

 函数写法 

猜你喜欢

转载自blog.csdn.net/weixin_64612659/article/details/130329235