写点什么

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

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

关注

评论

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

滴滴内部框架手册:Spring5+SpringMVC3+MyBatis3.X

Java架构追梦

Java spring 架构 mybatis springmvc

Nice!有了这份Alibaba内部 “Java面试宝典”,跳槽面试稳了

Java架构之路

Java 程序员 架构 面试 编程语言

执法监督信息化建设,公安情报指挥一体化合成作战系统开发

t13823115967

智慧公安

都 2021 年了,Serverless 能取代微服务吗?

Serverless Devs

Serverless 微服务 运维 云原生 后端

SpacePX挖矿系统APP开发|SpacePX挖矿软件开发

系统开发

社区一体化综合平台搭建,智慧平安小区建设解决方案

t13823115967

智慧城市 智慧平安社区平台建设

区块链数字货币多币种钱包开发案例

滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列

Java架构之路

Java 程序员 架构 面试 编程语言

APP专项测试 —— 弱网测试

行者AI

测试

架构师训练营第 1 期 - 第 11 周 - 命题作业

wgl

极客大学架构师训练营

软件测试的方法

测试人生路

软件测试

应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!

华为云开发者联盟

游戏 场景 崩溃

大神带你一睹为快!阿里技术官亲自码了“2000页的Spring全家桶笔记”真牛逼!

比伯

Java 编程 程序员 架构 计算机

阿里P8整理出Nginx笔记:Nginx应用与运维实战核心篇

996小迁

Java nginx 架构 面试

编写令人愉悦的API接口(二)

Geek_42915f

Java APi设计 接口规范

程序员必看的Redis6.0多线程性能测试结果及分析 你看懂了嘛?

比伯

Java 编程 架构 面试

用 JavaScript 实现寻路算法 —— 编程训练

三钻

Java 算法 大前端 七日更 寻路算法

灵魂一问:数据库连接池到底该怎么配?

Gopher指北

MySQL Go 语言

LeetCode题解:42. 接雨水,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

如何阅读别人的源码

熊斌

学习 Code Review 源码阅读 七日更

顶会两篇论文连发,华为云医疗AI低调中崭露头角

华为云开发者联盟

人工智能 医疗 华为云

从中心到边缘,IoT正变为互联网之上的一张大网

华为云开发者联盟

物联网 IoT 网络

ECS实践案例丨逻辑卷的创建和扩容操作指导

华为云开发者联盟

数据库 数据 服务

判空使用isEmpty()方法真的可行吗?

田维常

Java

Serverless 是一种思想状态

Serverless Devs

Java Serverless 运维 云原生 后端

波场智能合约系统开发技术方案丨智能合约DAPP系统开发源码

架构师训练营第 1 期 第 13 周作业

李循律

极客大学架构师训练营

用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练

三钻

Java 算法 大前端 游戏开发 七日更

高性能MySQL

田维常

MySQL

传统数仓如何转型大数据

数据社

大数据 数据仓库 七日更

你不好奇 Linux 网络发包过程吗?

小林coding

Linux 操作系统 网络

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