写点什么

你需要知道的 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:004798
用户头像

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

关注

评论

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

一次线上服务高 CPU 占用优化实践

挖坑的张师傅

性能优化 JVM cpu

面试考试可用,十大排序算法

我不自豪谁志豪

学习 面试 算法

利用goaccess分析nginx日志

Megatron7

nginx Linux

Graylog部署文档

勤而行之

Linux 开源 工具 日志分析

Flutter引擎源码解读-内存管理篇

Geek_70xtik

flutter ios android 跨平台 dart

低代码是什么鬼

Jeff Kit

低代码 全栈 开发

理解 KL 散度的近似

Neil

人工智能 学习 Deep learning Machine Learning

我们有来生吗?

Janenesome

读书 碎碎念 猎奇

书籍推荐

蛤蟆先生

读书

乞丐版英制单位转换

escray

学习 CSD 认证实战营

有节制的设计

胖鱼2号

微信 设计 無印良品

一次生产事故导致系统崩溃的原因排查过程

hellocj

《零基础学Java》 FAQ 之 1-HelloWorld程序发生了ClassNotFound错误怎么解决

臧萌

Java Hello World !

Kubernetes 将迎来首个 LTS 版本

倪朋飞

Kubernetes 容器 微服务

python 之 「奶茶名字」的词云展示

小匚

Python python 爬虫 python教程

取舍与可测试

孙苏勇

产品 产品设计 产品开发

回"疫"录(8):我怀疑我病了

小天同学

疫情 心理 回忆录 现实纪录 纪实

快捷考勤打卡设置

Megatron7

ios

Java并发编程基础--volatile

Java收录阁

volatile 线程

1分钟系列-Elastic Stack(ELK)简介

Yezhiwei

Logstash Kibana ELK

Bash 的4种运行模式

Megatron7

bash Linux DevOps Shell

《零基础学Java》 FAQ 之 2-Java版本那点事儿

臧萌

Java

pip 配置路径要死记硬背?

风起帆扬了

Python Linux windows pip

聊聊我的程序员下属

程序员干货站

Python 人工智能 程序员 程序人生

字节流(InputStream/OutputStream)

Howe

Java 工作流

JAVA 程序展示时间与数据表保存的时间相差了 13 个小时!

我不自豪谁志豪

MySQL 学习 后端

如何在“写作平台”做一个读者

小天同学

思考 写作平台 建议 读者 阅读量

程序员大佬怎么跳槽?

程序员干货站

Python 人工智能 程序员 后端

maven私服搭建

kcnf

maven

Redis学习笔记(字符串类型)

编程随想曲

redis

七大查找算法,面试考试皆可用

我不自豪谁志豪

Java 面试 算法

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