nuxt框架及vue-cli框架如何动态更换页签图标

5 篇文章 0 订阅
3 篇文章 0 订阅

nuxt动态更换页签图标

1.在nuxt中config可以配置静态ico
nuxt的config只在项目启动阶段生效,是配置,一次性的。

module.exports = {
  head: {
    title: 'xxx'
    link: [
      {
        rel: 'icon',
        type: 'image/x-icon',
        href: '/favicon.ico'
      }
    ]
   }

如果你要动态的修改icon,那你就在ssr的时候,用fetch或者asyncData属性在页面的head hooks里设置即可,建议查看nuxt的head说明:www.nuxtjs.cn,但是我发现在切换路由的过程中每个页面都需要请求一次图片,操作繁琐

后来思考可以在nuxt添加中间件,在router每次的周期中自动操作
在这里插入图片描述

import { getLogoImg } from '@/model/entity/content'

export default async function ({ app }) {
  try {
    const res = await getLogoImg()
    let link = app.head.link
    if (link.length == 0) {
      link.push({
        rel: 'icon',
        href: res.data?.filePath || '/favicon.ico',
        type: 'image/x-icon'
      })
    } else {
      link.find((item, index) => {
        if (item.rel == 'icon') {
          link[index] = {
            rel: 'icon',
            href: res.data?.filePath || '/favicon.ico',
            type: 'image/x-icon'
          }
        }
      })
    }

    app.head.link = link
  } catch (error) {}
}



//nuxt.config.js
module.exports = {
  router: {
    middleware: ['linkIcon']
    // mode:'hash'
  },
}

普通vue框架更改页签icon

在根目录的App.vue中请求数据
将link[rel=‘icon’]的herf进行替换就可以了

  methods: {
    getLogoFun() {
      content.getLogoImg().then(res => {
        this.headerLogo = res.data?.filePath
        let relIcon = document.head.querySelector("link[rel='icon']")
        relIcon.href = this.headerLogo
      })
    }
  },
  created() {
    console.log(process.env)
    this.getLogoFun()
  }
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值