写点什么

Linaria 1.0 正式发布:一个零运行时 CSS-in-JS 库

  • 2019 年 3 月 14 日
  • 本文字数:1221 字

    阅读完需:约 4 分钟

Linaria 1.0正式发布:一个零运行时CSS-in-JS库

Linaria](https://github.com/callstack/linaria)(一个零运行时 CSS-in-JS 库)第一个稳定版已发布,可供开发人员使用。Linaria 提供了一个新的 API,可以与 React 一起使用,目的是提供更好的开发者体验和构建集成。


Linaria 在其现有的CSS标签中新增了 styled 标签。styled 标签使用参数化的样式创建 React 组件。


import { styled } from 'linaria/react';
// Create a styled componentconst Button = styled.a` display: inline-block; border-radius: 3px; padding: 0.5rem 0; margin: 0.5rem 1rem; width: 11rem; background: transparent; color: white; border: 2px solid white;`render( <Button href="https://github.com/callstack/linaria" target="_blank" rel="noopener" primary > GitHub </Button>)
复制代码


Linaria 的标签遵循的是ES2015标签模板字面量语法。模板字面量是指可以嵌入表达式的字符串。被标记的模板可以使用函数来解析模板字面量。在上面的代码示例中,display: inline-block 是一个模板字面量,styled.a 是一个模板标签,styled.adisplay: inline-block是一个被标记的模板字面量。开发人员可以使用标准 CSS 语法或对象样式语法编写模板字面量。


此外,styled 标签通过在模板字面量内插入函数来支持动态样式


const Title = styled.h1`  color: ${props => (props.primary ? 'tomato' : 'black')};`;
复制代码


React 组件 Title 将根据 primary 属性将颜色调整为 tomato 或 black。


不过,IE 等较老的浏览器不支持动态样式,因为动态样式依赖 CSS 自定义属性(也称为CSS变量)。现代浏览器可以支持 CSS 自定义属性。


Linaria 1.0 附带了一个新的命令行接口(CLI),用于从 JavaScript 中提取 CSS 内容。下面的命令将从 component 和 screen 目录提取 CSS,并放进 styles 目录中。


npx linaria -o styles src/component/**/*.js src/screens/**/*.js
复制代码


Linaria 1.0 还提供了一个新的Rollup插件,允许开发人员使用 Rollup 构建项目,作为 Webpack 的替代。这个版本还改进了对stylelint处理器的支持。虽然以前的 Linaria 版本只支持Stylis CSS预处理器,但现在 Linaria 允许开发人员使用任意的CSS预处理器,比如 Sass 或自定义 PostCSS 语法。Linaria 还可以接受一个配置文件(linaria.config.js)。最重要的是,Linaria 支持 CSS 源映射,带来了简化的调试体验。


CSS-in-Js 是指一种在 JavaScript 而不是外部 CSS 文件中定义 CSS 的模式。它有两种子可以共存的子模式。运行时 CSS-in-JS 库(如 Emotion 或 style-components)可以在运行时动态修改样式,例如将样式标签注入文档。零运行时 CSS-in-Js 是一种在构建时提取所有 CSS 的模式。Linaria 和 Astroturf 是这种模式的主要支持者。


Linaria 是一个基于 MIT 许可的开源项目。欢迎读者参与 Linaria GitHub 项目的贡献,并遵循 Linaria 行为准则和贡献指南。


查看英文原文Linaria 1.0 Released: CSS-in-JS with No Runtime


2019 年 3 月 14 日 08:003879
用户头像

发布了 69 篇内容, 共 23.3 次阅读, 收获喜欢 122 次。

关注

评论

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

国内低代码产品是如何定位的?这3类,企业可自行对号入座

优秀

低代码

数字化转型背景下的测试转型

BY林子

敏捷测试 测试转型

聚焦机器同传前沿进展,第二届机器同传研讨会将在NAACL举办

百度大脑

人工智能 机器

HTTPS协议

IT视界

云原生推动全云开发与实践

阿里巴巴云原生

云原生

做通才还是专才,你会怎么选?

架构精进之路

认知提升 6月日更

大陆集团携手亚马逊云科技打造创新的汽车软件平台

亚马逊云科技 (Amazon Web Services)

5W1H聊开源之What——开源协议有哪些?

禅道项目管理

开源

分布式认知工业互联网如何赋能工业企业数字化转型?

CECBC

学妹问,学网站开发还是打 ACM?

程序员鱼皮

Java 程序员 算法 大前端 ACM

Java--JVM运行流程

是老郭啊

Java JVM JVM原理

从底层原理出发,了解Linux内核之内存管理

Linux服务器开发

后端 操作系统 内存管理 Linux内核 底层原理

全过程智慧教育,看北京四中网校和亚马逊云科技如何实现?| 精选案例

亚马逊云科技 (Amazon Web Services)

4月底JAVA面试太难,吃透这份JAVA架构面试笔记后,成功跳槽涨薪30K

Crud的程序员

Java 程序员 架构

项目管理与项目集管理、项目组合管理的区别?

万事ONES

项目管理 项目 PMO ONES

JavaScript 中数组 sort() 方法的基本使用

编程三昧

JavaScript 大前端 数组 排序 js

公司:离职就是一场危机管理

石云升

创业 职场经验 6月日更

探讨AI人才培养新思路,2021北京智源大会百度AI人才培养论坛召开

百度大脑

AI 人才培养

深度剖析:Redis分布式锁到底安全吗?看完这篇文章彻底懂了!

Kaito

redis zookeeper 分布式 后端

🏆【声网 Agora】「PC端实现实时语音通讯4.x」

浩宇天尚

WebRTC RTC征文大赛 声网 6月日更

《原则》(八)

Changing Lin

6月日更

加快技术应用规模化 建设世界先进水平区块链产业生态

CECBC

MySQL基础之六:连接查询

打工人!

myslq 6月日更

限流篇,欣赏阿里开源Sentinel

下雨喽

设计 sentinel 限流 架构·

为什么说产品经理也要学点技术?

LigaAI

产品经理 研发管理 技术团队 产品设计与思考

给你一直尝试和创新的机会!走进亚马逊云科技MRC团队

亚马逊云科技 (Amazon Web Services)

区块链+金融:当前区块链应用场景中最具活力的领域

CECBC

操作系统内核是什么?Linux内核又是什么?读完这篇文章,我终于知道了

奔着腾讯去

c++ 操作系统 内存管理 Linux内核 进程管理

人人视频被迫下架:打击盗版视频网站任重道远

石头IT视角

软件研发团队如何做好项目进度管理?

万事ONES

项目管理 研发管理 需求 ONES

不管是三胎还是App!指望“拉新”太难了,还是要靠老用户!

友盟全域数据

APP开发

Linaria 1.0正式发布:一个零运行时CSS-in-JS库-InfoQ