解决vue ssr css内联样式和link标签重复问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决vue ssr css内联样式和link标签重复问题相关的知识,希望对你有一定的参考价值。

参考技术A 基于vue-cli3的项目,改造成SSR。
服务端渲染会提取组件的样式内联到html中,与link标签中的重复,使得页面体积变大,导致响应时间很慢。
原因是ssr会自动进行资源注入 Manual Asset Injection ,包含css、js等。

我们需要的是没有<style>标签的页面

所以通过配置参数,关闭资源注入。

接下来需要把css、js等文件再关联到输出的html中
当创建bundlerender的时候,我们可以使用一个模板,在这个模板里面预置页面所需要的各种资源。

思来想去,csr(客户端渲染)模式下生成的index.html再合适不过了。
而且,当build csr时,我们也可以预置一个模板,在这里添加上第三方的资源

最后是在模板中添加锚点

到这里基本大功告成

贴一下vue.config.js和build script(windows 平台)

css的学习心得

css可以理解为一层一层的样式,并且是可以重叠覆盖的,通过改变样式,从而改变显示出来的效果

添加css有三种方式

1、内联;写在便签的内部

2、内嵌;写在head标签的内部

3、外部引用;还是写在head标签中,不过是通过link标签将外部的样式引入到html中

我们通常选择第三种

 

有了样式同样需要解决给谁用的问题

选择器 设在标签内部

通用选择器* 给所有的选择器用,遍布整个body

id选择器  #id值  只能有一个

标签选择器  :标签名

class选择器  .class值  一般多用class选择器

还有一些其他的选择器,常用的有

1、包含选择:通过A找到A包含的所有的B  B不分级别

A  B{   }    

2、子选择:只能命中子辈 下属的级别不能被命中到

A>B{   }

3、补充伪类选择器中的  A:first-child

在ul中如果要想选择第一个li   则需要这么写  li:first-child

A原则必须是某个元素的子元素 ,则 li必须要是ul中的第一个子元素

同理 last-child也一样

 

 

先用谁:优先级 正常情况下,相同选择器,像同样式 后面覆盖前面
权值 权值越大优先级越高
行内1000
id 100
class 10
标签 1
通用 0

以上是关于解决vue ssr css内联样式和link标签重复问题的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 ruby​​ slim 中渲染 css 内联,因为输出 css 没有插入到样式标签中

CSS样式表怎么做

css的学习心得

css基础知识总结

学会怎样给html标签定义css样式

vue ssr笔记