代码之家  ›  专栏  ›  技术社区  ›  Sam

使用2018年全新的“HTML导入”草稿快速加载网页:将rel=“stylesheet”替换为rel=“import”

  •  1
  • Sam  · 技术社区  · 7 年前

    在用google页面速度分析器测试我的移动友好页面时,它说:

    消除折叠上方的渲染阻塞javascript和css 内容。您的页面有2个阻塞的CSS资源。这会导致延迟 在呈现页面时。上面的折叠内容都没有 可以在不等待以下资源的情况下呈现页 装载。尝试延迟或异步加载阻塞资源,或 直接在html中内联这些资源的关键部分。

    根据这个 google page w3c 2018 March draft 很快,web将支持html导入。

    注意,Web平台很快将支持在 非渲染阻塞方式,无需使用 javascript,使用html导入。

    我的第一个问题是:

    如何将旧样式表转换为html导入?

    我能简单地改变…

    <link rel="stylesheet" type="text/css" href="all.css"/>
    <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=etc'/>
    

    …变成:

    <link rel="import" type="text/css" href="all.css"/>
    <link rel='import' type='text/css' href='https://fonts.googleapis.com/css?family=etc'/>
    

    我的第二个问题是:

    (何时)网络平台[主要浏览器如chrome、edge、firefox和主要服务器技术如apachee上的php 7.2]是否准备好安全地将网站从 rel="stylesheets" rel="import" 是吗?

    我的第三个问题是:

    根据google的说法,除了一点性能上的提升之外,在使用html导入和使用老rel=“stylesheet”相比,还会有什么下降的站点吗?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Supersharp    7 年前

    你不能简单地转换 stylesheet <link> 变成一个 import <link> 因为 <link rel="import"> 将只加载HTML文档,而不是CSS样式表。

    <link rel="import" href="imported-styles.html" async>
    

    因此,通过HTML导入导入的样式必须包含在元素中:

    导入样式.html 以下内容:

    <style> 
        //content of all.css
        ... 
    </style>
    

    一般使用标准 <link rel="stylesheet"> 以下内容:

    导入样式.html 以下内容:

    <link rel="stylesheet" type="text/css" href="all.css"/>
    <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=etc'/>
    

    注意,您应该使用 async 属性,如果不希望在处理主HTML文档的其余部分之前等待导入的文档加载。


    到现在为止 only Chrome and Opera 正在本机实现HTML导入。其他浏览器供应商不打算实现它,所以您需要使用edge和firefox的polyfill。

    这是一项非常先进的技术,所以服务器框架并不是很重要。

    使用html导入的缺点是,在某些特殊情况下,polyfill实现的行为可能略有不同(大多数polyfill都是这样)。见 limitatons 多聚填料的。

        2
  •  2
  •   JingAn Chen    6 年前

    HTML导入实际上被否决了,尽管它已经在Chrome中实现了。所以不要用它。

    https://dev.to/nektro/the-downfall-of-html-imports-is-upon-us-to-me

    类似的功能称为“html模块”将在未来推出,但即使是标准本身仍在github上讨论,因此我们需要很长时间才能使用它。

    https://github.com/dglazkov/webcomponents/blob/html-modules/proposals/HTML-Imports-and-ES-Modules.md

        3
  •  1
  •   caiovisk    7 年前

    第一个问题

    现在没有办法了。HTML导入是在其他HTML文档中包含和重用HTML文档的一种方法,请参见 HTML Imports 文件。

    第二个问题

    很难说什么时候 rel="import" 将广泛提供,但您可以轻松跟踪浏览器支持 我能用一下吗 网站 https://caniuse.com/#search=import ,它还显示要发布的下一个版本是否支持它。

    第三个加分问题

    rel=“导入” 是导入HTML文件。

    rel="stylesheets" 是导入css文件。

    你仍然需要使用 rel=“样式表” 加载你的css文件。