首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

精读《我们为何弃用 css-in-js

笔者用 styled-components 就遇到了类似问题,甚至语法会产生不兼容情况,虽然这些问题都可以被解决,但花费额外时间需要计算一样,相比 css-in-js 得到收益是否值得。...所以当性能问题是绕不过去的话题,而 css-modules 在性能最优情况下,一些曲线方案可以同时支持 css-in-js 优点,也就能理解为什么作者要弃用 css-in-js 了。...编译时 css-in-js 方案是出路 理论上是出路,但限制了 css-in-js 灵活性。...从 vanilla-extract 等编译时 css-in-js 框架来看,确实解决了运行时 css-in-js 性能问题,但带来了更多语法限制,比如必须预先定义样式再使用: import { style...想要做到通用性,只能提供一个 className,这样就不受任何框架和环境限制了,但这样也限制了声明语法灵活性,显然不可以用内连方式定义样式

1K10

CSS in JS好与坏

不同实现 实现了CSS-in-JS很多,据统计现在已经超过了61种。虽然每个库解决问题都差不多,可是它们实现方法和语法却大相径庭。...再来看一下radium在CSS-in-JS Playground例子: 从上面的例子可以看出radium定义样式语法和styled-components很大区别,它要求你使用style属性为DOM...其他区别 不同CSS-in-JS实现除了生成CSS样式和编写语法有所区别外,它们实现功能也不尽相同,除了一些最基本诸如CSS局部作用域功能,下面这些功能有的实现会包含而有的却不支持: 自动生成浏览器引擎前缀...好处 看完了一些不同实现,大家应该对CSS-in-JS一些基本概念和用法了大概理解,接着我们可以来聊一下CSS-in-JS都有什么好处和坏处了。...参考文献 An Introduction to CSS-in-JS: Examples, Pros, and Cons Why I Write CSS in JavaScript Oh No!

2.4K10

Facebook 重构:抛弃 Sass Less ,迎接原子化 CSS 时代

强制执行原子 CSS 规则一个规则,一个类名,什么好处?你最终会得到更大 html 标签和更烦人命名约定?Tailwind 已经了足够多原子类了啊。...Tailwind 是一个优秀解决方案,但仍然一些问题没有解决: 需要学习一套主观命名约定 CSS 规则插入顺序仍然很重要 未使用规则可以轻松删除?...我们如何处理剩下一次性样式? 与 Tailwind 相比,手写原子 CSS 可能不是最方便。 和 CSS-in-JS 比较 CSS-in-JS 和实用工具/原子 CSS 密切关系。...这两种方法都提倡使用标签进行样式化。以某种方式试图模仿内联样式,这让它们了很多相似的特性(比如在移动某些功能时候更有信心)。...探索原子 CSS-in-JS 原子 CSS-in-JS 可以被视为是“自动化原子 CSS”: 你不再需要创建一个 class 类名约定 通用样式和一次性样式处理方式是一样 能够提取页面所需要关键

3K10

精读《请停止 css-in-js 行为》

该部分由他们观点总结而出。 CSS 本身不少缺陷,如书写繁琐(不支持嵌套)、样式易冲突(没有作用域概念)、缺少变量(不便于一键换主题)等不一而足。...更有甚者,有人维护了一份完整 CSS in JS 技术方案对比。截至目前,已有 49 种之多。...比如是最简单 button,可能在用时候由于场景不同,就需要设置不同 font-size,height,width,border 等等,如果全部使用 css-in-js 那将需要把每个样式都变成...css-in-js 生成 className 通常是不稳定随机串,这就给外部想灵活覆盖样式增加了困难。...css modules 虽然有效解决了样式冲突问题,但是带来使用成本也很大。尤其是在写动画(keyframe)时候,语法尤其奇怪,总是出错,难以调试。

1.9K50

只写CSS

CSS不受欢迎是一个很普遍现象。导致这一现象原因很多,但可以归结为:CSS不可预测性。如果你在开发中从未有过这种经历:过调试一个样式时,一不小心破坏布局,让一个看起来毫不相关地方样式错乱。...然而,你不需要为了寻找解决方案而采用可能会引入更多问题CSS-in-JS。 本文目的并非想批评或否定CSS-in-JS社区所做出努力。...编译器(在Svelte例子中)可以识别并移除未使用样式。再也不会有累加样式表了! 我们来看看实际情况是怎样。 这就是他们所谓“利用平台”?...所有的代码编辑器早就能够识别CSS,所以,你可以轻松实现代码补全,语法检查,以及语法高亮等,这些都不需要安装会带来JS疲劳额外工具。...我们还没有得到所有的答案 不得不说,CSS-in-JS确实为一些延续已久问题指出了解决方案: 我们如何从npm上安装样式? 定义在一个地方常量如何复用? 我们如何撰写声明?

1.2K20

科普 | 一文详解 CSS-in-JS

每个模块都被独立标准化,现在标准 CSS 包括了修订后 CSS2.1 以及完整模块对它扩充,模块 level(级别)数并不一致。...CSS-in-JS 介绍 CSS-in-JS是一种样式化技术,其中 JavaScript 用于样式化组件。...每隔一段时间,都会有新语法方案或实现,尝试补充、增强或是修复已有实现。...展望未来 CSS 设计初衷是为了全局化控制样式,通过选择器去扩展丰富实际页面渲染,而 CSS-in-JS 并不是排斥 CSS 样式,而是说“样式”在现代化组件颗粒化发展下,使用 CSS-in-JS...,在组件扩展、主题自定义和状态同步有着很大优势,也期望在后续社区中有更多优秀实践可以参考

3K20

Facebook 重构:抛弃 Sass u002F Less ,迎接原子化 CSS 时代

强制执行原子 CSS 规则一个规则,一个类名,什么好处?你最终会得到更大 html 标签和更烦人命名约定?Tailwind 已经了足够多原子类了啊。...Tailwind 是一个优秀解决方案,但仍然一些问题没有解决: 需要学习一套主观命名约定 CSS 规则插入顺序仍然很重要 未使用规则可以轻松删除?...我们如何处理剩下一次性样式? 与 Tailwind 相比,手写原子 CSS 可能不是最方便。 和 CSS-in-JS 比较 CSS-in-JS 和实用工具/原子 CSS 密切关系。...这两种方法都提倡使用标签进行样式化。以某种方式试图模仿内联样式,这让它们了很多相似的特性(比如在移动某些功能时候更有信心)。...探索原子 CSS-in-JS 原子 CSS-in-JS 可以被视为是“自动化原子 CSS”: 你不再需要创建一个 class 类名约定 通用样式和一次性样式处理方式是一样 能够提取页面所需要关键

3.5K50

css-in-js 探讨

我一直在花费大量精力尝试各种方法,主要是在个人项目上,所以这个系列目的只是告知,而不是给你解决方案。 CSS挑战 在深入研究代码之前,必要解释Web应用程序样式化方面最显着挑战。...几个预定义按钮变化是可管理,但如果我们想要有各种按钮,如为Twitter,Facebook,Pinterest定制特定按钮,可能还会有其他很多种?...生成类是唯一,因此您永远不必担心它们与其他样式冲突。 换句话说,你可以自由使用作用域! 这就是大多数CSS-in-JS工作方式 - 当然,我们将在功能和语法方面进行一些改进。...例如,人们正在使用VS Code扩展样式组件来表示类似情感CSS-in-JS库,即使它们并非都具有相同功能。我甚至看到提议功能API选择受到保留语法突出显示目标的影响!...未来 两个新CSS-in-JS库,Linaria和astroturf,它们通过将CSS提取到文件中来管理零运行时。 它们API类似于样式组件,但它们功能和目标各不相同。

5.4K20

精读《css-in-js 杀鸡用牛刀》

3.1 css-in-js 依然具备视觉一致性 文中提出,网站样式要从全局考虑,模块化样式行为优点是解决了样式冲突问题,但因此也削弱了对全局样式把控。...3.4 SMACSS 为css分类 SMACSS 认为 css 5 个类别: Base 基础样式 Layout 布局样式 Module 模块样式 State 状态样式 Theme 主题样式 我们通过这...5 种类别来拼凑出完整 class,我感觉就是对 OOCSS 进一步规范和约束。...也可以参考此模式定义结构。...css-in-js 缺点大部分存在漏洞,但它警示了我们,css 设计初衷是全局化控制样式,即便产生了样式冲突、混乱问题,但我们仍要记住,在模块化开发今天,仍要保持网站风格整体性,即便使用了 css-in-js

72820

【React】:CSS 模块化

box 和 profile 什么关系? profile 和 avatar 什么关系?或者他们之间真的有关系? 你应该在 bio 旁边添加 pro-user ?...image 和 profile 写在同一部分 CSS ? 可以在其他地方使用 avatar ? 光看代码无法回答这些问题,你必须在 CSS 代码中推理他们作用。 1.2....难以维护 大规模 CSS 也难以维护。 当你改变了一个标签,样式就会像纸牌屋一样崩溃。 当你想更新一个页面上样式,却破坏了另一个页面的样式。 当你试图覆盖其他页面,但又深陷于优先度问题。...CSS-in-JSCSS-in-JS 很多实现方案,常见: styled-components:https://styled-components.com/ emotion:https:/...modules" 语法简化。 对 import "xx.css" 写法,不做任何转换。

1.3K20

为什么我用 JavaScript 来编写 CSS

我可以在不产生任何意外后果情况下,添加、更改和删除 CSS。我对组件样式更改不会影响其他任何内容。如果删除组件,我也会删除它 CSS。不再是只增不减样式表了!...提升团队合作:无论经验水平如何,都会避开 CSS 常见坑,以保持代码库整洁,并且开发更迅速。 关于性能,CSS-in-JS 库跟踪我在页面上使用组件,只将它们样式注入 DOM 中。...动态样式:基于全局主题或不同状态设置组件样式CSS-in-JS 还提供 CSS 预处理器所有重要功能。...上千家公司在生产中使用 CSS-in-JS,包括 Reddit、Patreon、Target, Atlassian、Vogue、GitHub、Coinbase 等等。...(包括本网站) CSS-in-JS 适合你? 如果你使用 JavaScript 框架来构建包含组件 Web 应用程序,那么 CSS-in-JS 可能非常适合。

1.3K50

再见,CSS-in-JS

当组件渲染时,CSS-in-JS 库必须将样式“序列化”为可以插入文档 Pure CSS。显然这需要额外 CPU 消耗,但这会对应用性能产生明显影响?我们将在下一节深入研究这个问题。...如果想深入理解,我推荐去看看完整讨论。感谢 Dan Abramov 在 Twitter 上指出这一不准确之处。 这个问题是无解,在运行时 CSS-in-JS 环境下它是无法修复。...因此,下面给出性能数字不一定也适用于你代码库 —— 许多用 Emotion 方式,每种方式都有其自身性能特点。...分析火焰图 下面是上述测试中单个列表项火焰图: 如你所见,大量渲染和组件——这些是我们使用css prop 样式原语”。...在看 Compiled 时,我注意到劣势包括: 组件首次挂载时样式仍被插入,这会强制浏览器对每个 DOM 节点重新计算样式。(这一劣势之前我们讨论。)

35950

为什么和 CSS-in-JS 说拜拜

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,一线大厂面试完整考点、资料以及我系列文章。...CSS-in-JS 好、坏、丑 在讨论 CSS-in-JS 编码模式及其对性能影响之前,先来看看为什么有的开发者会使用 CSS-in-JS,有的不会使用。 好处 1.局部作用域样式。...下面是一些数据,供那些好奇的人参考: 我们新样式系统 在我们下定决心不再使用CSS-in-JS之后,一个新问题就会出现:我们应该用什么来代替?...交流 梦想,干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗刷碗智。...本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,一线大厂面试完整考点、资料以及我系列文章。

2.4K20

CSS-in-JS,向Web组件化再迈一大步 | 洞见

CSS Modules - 模块化CSS,将CSS文件以模块形式引入到JavaScript里,基本上解决了全局污染、命名混乱、样式重用和冗余问题,但CSS嵌套结构限制(只能一层),也无法方便在...流行框架介绍 现在随着组件化概念流行,对从组件层面维护CSS样式需求日益增大,CSS-in-JS就是在组件内部使用JavaScript对CSS进行了抽象,可以对其声明和加以维护。...代码风格: 从上图可以看出,Title和Wrapper都是框架包装好component,可以直接在reactjsx语法中使用,在包装component时候还定义了标签分别是h1和section。...JSS 和上面两个框架类似,jss也是会定义styles对象,并附到component上,最后生成dom也是会有生成唯一class名称,并有对应样式,但样式并不是真正css语法,而是对象属性和值...优劣势总结 看了这些框架后,可以发现CSS-in-JS优势还是挺多: 因为了生成唯一class名称,避免了全局污染问题 唯一class名称也解决了命名规则混乱问题 JavaScript和CSS

99680
领券