时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

你需要知道的 CSS-in-JS

  • 2017-11-26
  • 本文字数:5209 字

    阅读完需:约 17 分钟

什么是 CSS-in-JS?直接在.css 文件里写 CSS(CSS-in-CSS)不是挺好的吗,为什么还需要 CSS-in-JS?

说到这里,不得不提到组件化。因为有了组件化概念,就不再需要维护一大堆杂乱的样式。CSS-in-JS 在组件层面(而不是文档层面)对 CSS 进行了抽象。在项目中维护一个巨大的样式文件夹实在是一件让人感到头疼的事情,很多人不禁感叹,是否还有其他更好的办法?不用说,CSS-in-JS 在目前看来就是一个最佳解决方案。

当然,要继续使用 CSS-in-CSS 还是转向 CSS-in-JS 完全取决于开发者自己,最关键的是选择合适的工具来改进开发工作流,在提升生产力的同时也让开发变得更有趣。

什么是 CSS-in-JS

JSS 对 CSS 进行了抽象,使用了 JavaScript,以声明和可维护的方式来描述样式。它是一个高性能、运行在服务器端的运行时 JS 到 CSS 编译器。它的核心部分与框架无关,经过压缩后只有 6KB,并可以通过插件 API 的方式进行扩展。

需要注意的是,内联样式和 CSS-in-JS 是完全不一样的!

内联样式

复制代码
const textStyles = {
复制代码
   color: white,
复制代码
   backgroundColor: black
}
<p style={textStyles}>inline style!</p>

在浏览器里,样式属性会被附加到 DOM 节点上:

复制代码
<p style="color: white; backgrond-color: black;">inline style!</p>

CSS-in-JS

复制代码
import styled from 'styled-components';
const Text = styled.div`
复制代码
   color: white,
复制代码
   background: black
`
<Text>Hello CSS-in-JS</Text>

在浏览器里,样式类会被附加到 DOM 节点上:

复制代码
<style>
.hash136s21 {
复制代码
   background-color: black;
复制代码
   color: white;
}
</style>
<p class="hash136s21">Hello CSS-in-JS</p>

可以看出,CSS-in-JS 会附加整个

2017-11-26 18:004762
用户头像

发布了 322 篇内容, 共 156.7 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

王者荣耀商城异地多活架构设计

Fingal

架构实战营

下单流程解耦新方案-你知道Spring事件监听机制吗

越长大越悲伤

事件驱动 SpringBoot 2 实战

【PIMF】OpenHarmony啃论文俱乐部——“六脉神剑”详解

离北况归

OpenHarmony Openharmony啃论文俱乐部 六脉神剑

13W字!2021最新发布互联网大厂高频面试技术点!

爱好编程进阶

Java 面试 后端开发

linux之read命令

入门小站

在线脑图思维导图生成工具

入门小站

工具

消息队列存储消息数据的 MySQL 表格

AragornYang

架构训练营 架构实战营

为什么选择学习 Sanic 框架

宇宙之一粟

4月月更 sanic

Tuxera NTFS Mac2022磁盘读写工具

茶色酒

Tuxera NTFS Mac2022

如何从 Java 的 List 中删除第一个元素

HoneyMoose

关于OpenHarmony3.1,想随便聊一点

坚果

OpenHarmony 4月月更

残酷春天里的中国科技(二):和全球供应链一起“仰卧起坐”

脑极体

Linux驱动开发-内核定时器

DS小龙哥

4月月更

AirServer2022苹果mac电脑投屏软件工具

茶色酒

AirServer

泛型真的会让程序变慢吗?(Go1.18新特性)

蔡超

golang 编程 编程、 Go 语言

15 张图 | 深入理解 OpenFeign 远程调用的架构原理

悟空聊架构

Feign 4月日更 悟空聊架构 openfeign 4月月更

深入解析JVM-Java对象头组成

janyxe

Java JVM Java内存布局 Java对象头 Java对象组成

Dio —— Flutter 网络请求之王者

岛上码农

flutter 移动端开发 4月月更 跨平台开发 安卓 ios

[Day17]-[动态规划]打家劫舍

方勇(gopher)

LeetCode 数据结构和算法

2020年Mybatis常见面试题总结(附答案)

爱好编程进阶

Java 面试 后端开发

残酷春天里的中国科技(三):持续缠绕的科技封锁线

脑极体

设计消息队列存储消息数据的 MySQL 表格

孙强

架构师实战营

一文了解异步编程基础

宇宙之一粟

Python 异步编程 4月月更

15 高可用网站的软件质量保证

爱好编程进阶

Java 面试 后端开发

在线CSV转多行数据工具

入门小站

工具

Android C++系列:C++最佳实践4多重继承与虚继承

轻口味

c++ android 4月月更

HttpClient使用详解与实战一:普通的GET和POST请求

乌龟哥哥

4月月更

2020年最具影响力的4种编程语言 平均薪资20K+

爱好编程进阶

Java 面试 后端开发

学生管理系统详细架构设计文档

哈喽

「架构实战营」

EasyRecovery15数据恢复软件

茶色酒

EasyRecovery15

10个经典场景带你玩转SQL优化

爱好编程进阶

Java 面试 后端开发

你需要知道的CSS-in-JS_语言 & 开发_Indrek Lasn_InfoQ精选文章