npm 包 critical 使用教程

在现代 WEB 开发中,性能优化是非常重要的一环,而 Critical CSS 也是其中一个重要的方向。今天,我将向大家介绍一个非常方便易用的 npm 包:critical

Critical CSS 是什么?

如何在用户获取页面的时候最小化 Web 应用程序需要加载的关键样式,并最大化其他(非关键) CSS 的下载,就是 Critical CSS 的主要目标。

举个例子,如果你有一个页面,其中有一个大图并且这张图片是滚动页面时的底部。如果你的 CSS 是使用这样的方式,比如:

------- -
  ----------------- ---
  ------- ---
  ---
-

------------ -
  ----------------- ---
  ------- ---
  ---
-

当用户在浏览器中浏览网页时,他们将首先加载头文件上的 CSS 。现在,我们知道页面中的最后一张图片是最大的。 所以,用户将等待其他的 CSS 被下载,然后才能使用页面的底部。同样,当用户向下滚动网页时,他们将等待其他 CSS 样式被下载。这将导致速度变慢和性能低。

但是,如果为最后一个页面部分添加关键 CSS 样式,则用户在加载完共享的样式表后就可以滚动到已准备好的页面底部样式,即快速第一次内容呈现时间(First Contentful Paint,FCP)。

------- -
  ----------------- ---
  ------- ---
  ---
-

--------------------- -
  ----------------- ---
  ------- ---
  ---
-

critical 是什么

上面的例子说明了 Critical CSS 的重要性,那么 critical 包是用来干什么的呢?其主要功能是抽取 HTML 中需要的关键 CSS代码,打包至一个文件中,加快首次渲染时间,提高性能。

安装

--- - --------

用法

critical 的使用非常简单,很容易理解。让我们通过一个简单的示例来使用它。

----- -------- - --------------------
-------------------
  -- -----
  ------- -----
  ----- -----
  ---- -------------
  -- ------
  ------- -
    ---- -----------
    ----------- -----------------
    ----- -------------
  --
  -- --
  ----------- -
    -
      ------- ----
      ------ ----
    --
    -
      ------- ----
      ------ -----
    --
  --
  -- -----
  ------- --------------
  -- ---
  -------- -
    ---------- ------ ---------- ---------
    -------- --------------
  --
  -- -----
  ---- -
    -
      ------- -----
      --------- ------
      -- ---- ------ ----- ------ ------ --
      ------- --------------
    --
  --
---------- -- -
  ---------------------- -------- -------
---

让我们大体上了解一下 generate 函数的每个选项:

inline (默认值: false )

当 inline 为 true 时,输出的 Critical CSS 将嵌入页面中,而不是以链接形式加载。默认情况下,这是在HTML的部分中完成的。

base

要解析的基本路径。例如,如果你的 HTML 文件位于根目录( / )下,则 base 可以设为 './',否则你必须使用需要解析的绝对路径。

src

一个页面的路径 (文件名),例如 './index.html'。如果 inline 属性为 true,则将修改源文件,而不是复制。

target

目标选项。这里我们可以定义三个目标,即 CSS 文件名、HTML 文件名和非关键路径的 CSS 文件名。默认情况下,critical 输出文件会自动放在 /dist 文件夹中。

dimensions

需要生成 CSS 的视口宽度。可以传递多个对象,每个对象都包含 height 和 width 属性。在我们的例子中,我们使用两个维度:高度为 480 和宽度为 320 的移动设备和高度为 900 和宽度为 1200 的桌面。

ignore

一个数组,其中包含要忽略的 CSS 选择器。

extract.selectors

在生成的关键 CSS 中应该出现的 CSS 选择器。可以是任何类型的选择器,包括类、ID 和伪类。

extract.exclude

一个正则表达式的数组,用于排除匹配的选择器。默认情况下,忽略所有 @-规则,包括 ​ @font-face。

css.external

默认为 false,当 external 为 true 时,critical 会从 css 文件中加载外部 CSS 代码,而不是在 HTML 中显式地内嵌 CSS 代码。

css.inline

默认为 false,当 inline 为 true 时,critical 会从 css 文件中加载内嵌的(或不包含链接)和外部 CSS 代码,并将其嵌入到页面中。

css.ignore

省略匹配 globby 路径名检查的 glob 。

Perfect Critical CSS

总结

Critical CSS 可以很好的缩短首次渲染的时间,提高性能。critical 的使用也非常便利,它支持多种属性定制,能够帮助开发者快速地实现 Critical CSS 相关的优化任务。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/63886


猜你喜欢

  • npm 包 eslint-config-universe 使用教程

    在前端开发中,代码的质量一直是大家关注的焦点。良好的编码规范和代码风格可以提高代码的可读性和可维护性,减少潜在的错误。但是在大型项目中,统一代码规范需要付出很多努力,这时候工具的支持就显得尤为重要。

    5 年前
  • npm 包 wemix-cli 使用教程

    前言 wemix-cli 是一个基于微信小程序的开发工具,提供一个快速开发小程序的前端脚手架工具。本文将详细介绍如何安装和使用 wemix-cli,帮助新手快速上手小程序开发。

    5 年前
  • npm 包 jsdoc-dynamic 使用教程

    如果你是初学前端的开发者,可能会对 jsdoc-dynamic 这个 npm 包感到陌生。那么,本文将带您了解这个 npm 包的使用方法和其在开发中的指导意义。 什么是 jsdoc-dynamic? ...

    5 年前
  • npm 包 snekfetch 使用教程

    简介 snekfetch 是一个用于发送 HTTP 请求的 Node.js 包,它与 Node.js 内置的 http 库功能相似,但更加简洁易用,支持 Promise 和流式请求等特性。

    5 年前
  • npm包pubg.js使用教程

    随着现代社会的快速发展,游戏已成为人们休闲娱乐的重要方式。作为其中的明星游戏,吃鸡游戏成为了许多玩家的最爱。而在前端领域,如何方便地对于吃鸡游戏进行数据分析和展示呢?npm包pubg.js应运而生。

    5 年前
  • NPM 包 Express-Kit 使用教程

    Express-Kit 是一个基于 Express 框架的轻量级 Web 开发工具包。它提供了一系列常用的中间件和工具函数,让开发者可以更加便捷地搭建 Web 应用。

    5 年前
  • npm 包 check-dependencies 使用教程

    简介 随着前端开发的快速发展,前端项目的复杂度也越来越高,项目中使用的依赖也越来越多,管理这些依赖成为了一项非常困难的任务。npm 包 check-dependencies 提供了一种方便快捷的方式来...

    5 年前
  • npm包 toobusy-js 使用教程

    前言 在 Web 应用程序中,当负载变得过高时,用户将不得不等很长时间才能得到响应。这对用户来说非常不好,也可能导致应用程序崩溃。使用 Node.js 编写的应用程序需要避免这样的情况,以确保系统在负...

    5 年前
  • npm 包 tamper 使用教程

    1. 什么是 tamper tamper 是一个能够拦截和修改浏览器 HTTP 协议中请求及响应的 npm 包。它的作用是能够在请求和响应中,提供一些额外的信息,或者修改原有的信息以达到特定的需求。

    5 年前
  • npm 包 roosevelt-less 使用教程

    介绍 npm 是 Node.js 的包管理器, roosevelt-less 是一款基于 roosevelt 框架的 Less 预处理器,可以让开发者在使用 roosevelt 进行前端开发的同时,轻...

    5 年前
  • npm 包 teddy 使用教程

    简介 Teddy 是一个实用的 JavaScript 模板引擎,它可以轻松地在前端和后端使用。它基于 mvvm(模型视图视图模型)的设计模式,易于学习和使用。在本文中,我们将探讨 teddy 的使用方...

    5 年前
  • npm 包 roosevelt 使用教程

    介绍 npm包roosevelt是一个开源的Web应用框架,它可以快速构建Node.js Web应用程序并提供强大的模板和路由操作功能。roosevelt 面向 Web 开发新手和专业开发人员,是构建...

    5 年前
  • npm 包 roosevelt-uglify 使用教程

    什么是 roosevelt-uglify? roosevelt-uglify 是基于 UglifyJS 的一个 npm 包,它提供了一个可配置的、自动化的 JavaScript 压缩工具,用于将您的 ...

    5 年前
  • NPM 包 isa-stream 使用教程

    前言 当我们在前端进行数据流操作的时候,经常会用到数据流转换以及管道操作。而 Node.js 提供的流(stream)是一个非常好用的数据流处理方式。其中 isa-stream 就是一个非常方便的 N...

    5 年前
  • npm 包 gearman-packet 使用教程

    简介 gearman-packet 是一个基于 Node.js 的 npm 包,用于与 Gearman 服务器进行通信。Gearman 是一个用于分布式计算的服务器软件,可用于处理大量 CPU 密集型...

    5 年前
  • npm 包 emptyfunction 使用教程

    在前端开发中,我们经常需要定义一些空函数。空函数并不执行任何操作,但是由于可以在任何需要函数的地方进行调用,因此对程序的可读性和可维护性有很大的提升。npm 包 emptyfunction 就是一种封...

    5 年前
  • npm 包 duplex-combination 使用教程

    什么是 duplex-combination? duplex-combination 是一个 npm 包,它提供了一个可以将多个 Node.js 双工流(Duplex Stream)合并成一个单独的流...

    5 年前
  • npm 包 standard-error 使用教程

    简介 standard-error 是一个用于处理错误信息的 npm 包。该模块旨在提供一种更简单、更清晰的方式来生成和处理错误。 安装 使用 npm 安装该包: --- ------- ------...

    5 年前
  • npm 包 Abraxas 使用教程

    在开发前端应用时,我们经常会用到各种 npm 包。其中,Abraxas 是一个非常强大的 npm 包,它提供了许多有用的前端组件和工具。本文将详细介绍如何使用 Abraxas,包括安装、使用和示例代码...

    5 年前
  • npm 包 express-defend 使用教程

    简介 express-defend 是一个 Node.js 应用程序安全性工具,它可以帮助防止表单垃圾邮件和暴力攻击。它基于 Express.js,提供一组防止垃圾邮件和暴力攻击的中间件和功能。

    5 年前

相关推荐

    暂无文章