Nuxt去除data-n-head等默认属性

当我们使用nuxt开发网站时,生成的页面头部会自动加上 data-h-head的属性,例如

本来这也不算什么事,毕竟框架开发给标签加属性,很常见的事了

但是好巧不巧,做seo的团队发出了他们的意见,头部标签就是不能有 data-h-head属性

没得办法,作为一个高级程序员,我开始了百度,然后就搜出了以下答案

render:{
   route(url, result){
     result.html = result.html.replace(/data-n-head=\"ssr\"/gi, '')
   }
}

(我又回来了!上面这个命令在使用npm run build 和 npm run start 部署时是没有问题的)

立马复制一看,没错解决了,本地的网页头部标签确实没有了 data-h-head

立马提交,generate打包生产,刷新一看,呐尼,这哥们还是好好的在这

 

左思右想,试了两次,跟代码没啥关系,生产就是没有作用

然后就去官方文档翻箱倒柜,就发现了这玩意

嗖地撕裂,当时大悟,立马把我 写在 render 里的代码,复制了过来,一顿操作,终于去除了data-h-head

 hooks: {
    generate:{
      page(page){
        page.html = page.html.replace(/data-n-head=\"ssr\"/gi, '')
      }
    }
  }, // head 同级哦
  loading: {
    color: '#1393FF',
  },
  head: {
  
  }

后来发现官方也有说解决方案

官方回答:Nuxt adds in data-n-head into this but for the most part it’s pretty standard meta tags.

hooks: {
    generate: {
      page(page) {
        const cheerio = require("cheerio");
        const $ = cheerio.load(page.html, { decodeEntities: false });
 
        const attrs = [
          "data-n-head-ssr",
          "data-n-head",
          "data-hid",
          "data-vue-ssr-id",
          "data-server-rendered"
        ];
 
        attrs.forEach(value => {
          $("*[" + value + "]").removeAttr(value);
        });
        
        page.html = $.html();
      }
    }
  }

官网的确实全面一些,不过我图省事还是用上面的正则干了

今天的避坑日记就写到这里了,多谢观看,关注公众号 HolleBug 前端学习会迷路

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值