在使用vue脚手架时为啥不能加载favicon.ico图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用vue脚手架时为啥不能加载favicon.ico图标相关的知识,希望对你有一定的参考价值。

你是怎么写的? favicon.ico 图片有两种情况,一种是直接把图标文件放在站点根目录下,这种情况下页面中不需要写任何内容,支持ico图标的浏览器会自动读取到。
一种是图标文件不在根目录,而是在特定的文件夹下,这种情况需要使用 link 标签来引入,href 属性中写路径地址。
如果你使用的是第二种情况的话,使用 vue 脚手架生成项目之后,手动修改一下 index.html 文件,把 link 标签加上应该就没问题了。
参考技术A

将你的 favicon.ico 放在static文件里 , 在webpack.dev.conf.js 中写成

new HtmlWebpackPlugin(

filename: 'index.html',

template: 'index.html',

inject: true,

favicon: './static/favicon.ico'

)

index.html里添加

<link rel="shortcut icon" type="image/x-icon" href="./static/favicon.ico" rel="external nofollow" />

dev环境 和build 后都能看到你的favicon.ico

vue-router的使用

项目文件结构:

技术图片

vue.config.js 用于配置路径指向  注意:这里的文件名不能自定义

技术图片

vue-router的安装

这个项目用的是vue-cli3脚手架的项目结构可以选择安装 vue 和 vue-router

vue-router的安装  npm i –S vue-router  --运行依赖的安装

路由文件的抽离 router/index.js

技术图片

相关路由模块的导入

技术图片

路由组件导入时的路由懒加载写法:

const Home = () => import(‘../components/Home.vue‘)

技术图片

在vue模块中安装路由

技术图片

路由映射配置:

技术图片

路由重定向:

技术图片

路由嵌套:

技术图片

注意:路由嵌套时,children中的path可以不加斜杆

动态路由:

技术图片

创建路由对象

技术图片

vue实例中注入路由 main.js

技术图片

最后暴露自定义的路由实例

export default router

html页面中路由的应用 => 路由跳转

技术图片

router-link标签 用来进行路由跳转

router-view标签 用来展示路由组件

router-link 属性 (to:跳转路径 ,tag:渲染出来的标签,默认是a标签
replace:点击后不会创建history对象,即不能后退)
技术图片
技术图片
to属性绑定对象:
技术图片
请注意:用path属性指定路径后,params属性就不生效了
对象中可以通过name来指定要跳转的路由,前提是路由映射配置要用name设置命名路由
技术图片


通过自定义方法来定义路由的跳转

关键字 => $router 方法push replace back forward go

push:跳转某个路由

replace:跳转某个路由但是不生成history对象

back:返回到上一个history对象

forward:前进到下一个history对象

go:整形参数n 可传负数  正数forward n 个history对象

负数back n 个 history对象

技术图片

技术图片

路由传值的获取

关键字:$route

  • $route.path
    字符串,等于当前路由对象的路径,会被解析为绝对路径,如 "/home/news"
  • $route.params
    对象,包含路由中的动态片段和全匹配片段的键值对
  • $route.query
    对象,包含路由中查询参数的键值对。例如,对于 /home/news/detail/01?favorite=yes ,会得到$route.query.favorite == ‘yes‘
  • $route.router
    路由规则所属的路由器(以及其所属的组件)。
  • $route.matched
    数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
  • $route.name
    当前路径的名字,如果没有使用具名路径,则名字为空。

技术图片

路由全局导航守卫 => 路由钩子函数

./router/index.js

技术图片

beforeEach每次路由跳转前要执行的函数

afterEach每次路由跳转后要执行的函数

参数:fn(to,from,next)

to跳转目标路由对象 => route对象

from跳转来源路由对象 => route对象

next函数,决定 继续跳转 还是中断跳转 还是重定向跳转


这里实现了网页title随路由跳转而动态变化

用to获取了要跳转的路由对象中meta元数据对象中的title

meta中有数据是因为事先已经在路由映射的配置中,给meta对象添加了数据

技术图片

路由组件守卫  => 路由组件钩子函数

技术图片

路由跳转时调用当前的路由组件时触发,参数定义与路由全局导航守卫一致

路由私有守卫

技术图片

路由跳转到当前有定义路由私有守卫的路由时触发,参数与上面一致

补充keep-alive标签的作用

技术图片

被keep-alive标签包裹的router-view标签中的组件对象不会随着路由跳转而被销毁

exclude可以用来排除路由组件 include用来包括路由组件 以此决定保护那些组件对象

取值是conponent名 ,也就是路由映射配置中的component


被keep-alive标签包裹的组件对象,因为组件对象被保存了下来,因此失去了created()

destroyed()组件钩子函数的作用,于是多了activated()和deactivated()的钩子函数

来判断当前组件是否处于显示状态。

下面是在Home组件中定义的actived():

技术图片












以上是关于在使用vue脚手架时为啥不能加载favicon.ico图标的主要内容,如果未能解决你的问题,请参考以下文章

vue3.0脚手架为啥一引入iview就报错

vue-router的使用

使用vue-cli 脚手架快速搭建单页面组件

vue-cli 快速搭建脚手架

为啥不能加载块?

使用脚手架 vue-cli 4.0以上版本创建vue项目