简述 styled-components 性能

简介: 笔记

15.pngstyled-components 是一个流行的 React 库,一个 CSS in JS 样式框架,它使用 JavaScript 中的标记模板字面量和 CSS 的强大功能来提供一个平台,允许编写实际的 CSS 来设置 React 组件的样式,同时兼顾开发人员体验和性能。

基本上是在编写 CSS,但使用的是 Javascript。实际上可以命名自己的标签,以便更容易识别它们。可以使用 Javascript 更改属性的值,这非常适合具有动态内容的应用程序。

官方网站:styled-components.com/

下面是一段使用的代码:

const Button = styled.a`
  /* This renders the buttons above... Edit me! */
  display: inline-block;
  border-radius: 3px;
  padding: 0.5rem 0;
  margin: 0.5rem 1rem;
  width: 11rem;
  background: transparent;
  color: white;
  border: 2px solid white;
  /* The GitHub button is a primary button
   * edit this to target it specifically! */
  ${props => props.primary && css`
    background: white;
    color: black;
  `}
`

styled-components 的痛点

  • 一个额外的包裹
  • 更大的 JS 包
  • 影响 CSS 性能(特定环境)
  • CSS文件和JS文件的处理方式不一样

现在使用谷歌浏览器开发工具 Lighthouse 来对比一下样式组件性能和模块化CSS的性能。测试的环境将模拟安卓环境、网络设置为慢速3G模式、CPU设置为 4 核。

开始之前先简单介绍几个前端性能指标:

  • FCP:First Contentful Paint 首次内容绘制,指浏览器渲染出第一个内容的时间,内容可以是文本、img标签、SVG元素等,但是不包括 iframe 和白色背景的 Canvas 元素。
  • SI:Speed Index 首屏展现平均值,这是 Lighthouse 的六项性能指标之一。
  • LCP:Largest Contentful Paint 最大内容绘制,指可视区内容最大的可见元素出现在屏幕上的时间,衡量加载性能的核心指标。
  • TTI:Time to Interactive 可交互时间,该指标用于测量页面从开始加载到主要子资源完成渲染,并能够快速、可靠地响应用户输入所需的时间。


styled-components 性能

  • 平均性能范围:8995 毫秒
  • FCP:2.1
  • SI:7.6
  • LCP:12
  • TTI:12.5

模块化 CSS 性能

  • 平均性能范围:13809 毫秒
  • FCP:2.2
  • SI:9.1
  • LCP:13.1
  • TTI:13.2

从上述两组数据看到,在平均性能范围内,styled-components 节省了 4814 毫秒!考虑到 CSS 规则根本没有改变这一事实,速度指数和其他指标的提升也相当大。上述性能数据是有一定的前提环境,但从官方的介绍来看,整体性能还是不错的。


结论


可以在 React 中使用这两种技术并创建令人惊叹的WEB应用,这只是为正确的工作选择正确的工具的问题。如果有一个高度可定制的仪表板将代码库更改为模块化 CSS 可能没有意义。然而,如果用户来自移动设备,建议尝试看看WEB应用使用模块化 CSS 的速度有多快。最终选用什么方式还有其他的决定因素,性能只是其中之一。


相关文章
|
17天前
|
缓存 监控 JavaScript
优化策略:提升Vue应用的性能和加载速度
【4月更文挑战第23天】本文探讨了优化Vue应用的策略,包括代码层面(精简代码、组件拆分、计算属性和侦听器)、路由懒加载、数据懒加载与防抖节流、图片和资源压缩及CDN、缓存机制的利用,以及使用Vue Devtools和性能分析工具进行监控与调试。通过这些方法,可以提升Vue应用的性能和加载速度,确保用户获得流畅体验。
|
17天前
|
缓存 JavaScript 索引
Vue性能优化的方法有哪些
Vue性能优化的方法有哪些
|
17天前
|
JavaScript 前端开发 API
< 简述 “ 尤大 ” 的 Vue3 相比 Vue 2 的区别 >
vue2 向 vue3 的变更! Vue 3在2018年末开始规划,旨在利用ES6特性,解决Vue 2的性能和架构问题。Vue 3的核心改进包括:更快的速度(重写虚拟DOM,优化编译和组件初始化)、更小的体积(借助tree-shaking优化打包)、更好的维护性(引入组合式API以提高代码复用和可维护性)、拥抱TypeScript以及更接近原生的自定义渲染API。此外,Vue 3还引入了Fragments、Teleport、createRenderer等新功能,同时对全局API、模板指令、组件和渲染函数进行了调整或移除,以提高兼容性和性能。
< 简述 “ 尤大 ” 的 Vue3 相比 Vue 2 的区别 >
|
17天前
|
前端开发 搜索推荐 UED
单页面应用(SPA)与多页面应用(MPA)的区别及优缺点
单页面应用(SPA)与多页面应用(MPA)的区别及优缺点
57 1
|
17天前
|
缓存 前端开发 架构师
理解这个机制,是成为React性能优化高手的关键
理解这个机制,是成为React性能优化高手的关键
|
17天前
|
JavaScript 安全 开发工具
?Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
简介在 Vue 应用程序的开发中,代码压缩、加密和混淆是优化应用程序性能和提高安全性的重要步骤。 Vue CLI 是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能。本文将介绍如何使用 Vue CLI 配置代码压缩、加密和混淆功能,以提高应用程序的性能和安全性。
|
12月前
|
移动开发 缓存 前端开发
构建高性能 React Native 跨端应用—图片与内存
介绍 React Native 跨端应用图片和内存的优化
构建高性能 React Native 跨端应用—图片与内存
|
12月前
|
存储 JavaScript 算法
Vue3 是如何通过编译优化提升框架性能的?
Vue3 是如何通过编译优化提升框架性能的?
136 0
|
12月前
|
JavaScript 前端开发 UED
使用 unplugin-vue-components 按需引入组件(内附实现原理)
使用 unplugin-vue-components 按需引入组件(内附实现原理)
655 0
|
前端开发 JavaScript API
React组件库设计 | 关于我一边写Concis一边给字节组件库arco design提pr的分享
看过我最近的一些文章的小伙伴应该都知道,博主最近半年时间一直在写自己的React组件库Concis,其实这也是从造轮子 -> 学习的目的去做这件事的。
104 1
React组件库设计 | 关于我一边写Concis一边给字节组件库arco design提pr的分享
http://www.vxiaotou.com