Facebook 开源 StyleX —— 在 JavaScript 中写 CSS
Meta(原 Facebook)开源了全新的 CSS-in-JS 库 StyleX。
GitHub 地址:https://github.com/facebook/stylex
官方介绍道,StyleX 是一个富有表现力、具有确定性、可靠且可扩展的样式系统。它通过使用编译时 (compile-time) 工具融合了静态 CSS 的性能和可扩展性。
此外,StyleX 不仅仅是一个基于编译器的 CSS-in-JS 库,它经过精心设计,可以满足大型应用程序、可复用组件库和静态类型代码库的要求。Meta 旗下多款产品如 Facebook、WhatsApp、Instagram、Workplace、Threads 等都在使用 StyleX 作为其 CSS 样式解决方案。
StyleX 主要特性
-
快速:StyleX 在编译时和运行时都具备高效的性能。Babel 转换不会对构建过程产生显著影响。在运行时,StyleX 避免了使用 JavaScript 插入样式的开销,并仅在必要时高效地组合类名字符串。生成的 CSS 经过优化,确保即使是大型网站的样式也能被浏览器快速解析。
-
可扩展:StyleX 旨在适应像 Meta 这样的超大型代码库。通过原子构建和文件级缓存,Babel 插件能够处理数万个组件在编译时的样式处理。由于 StyleX 设计为封装样式,它允许在隔离环境中开发新组件,并期望一旦在其他组件中使用时能够可预测地呈现。
-
可预测性:StyleX 会自动管理 CSS 选择器的特异性,以确保生成的规则之间不会发生冲突。它为开发人员提供了一个可靠地应用样式的系统,并确保“最后应用的样式始终生效”。
-
类型安全:使用 TypeScript 或 Flow 类型来约束组件接受的样式,每个样式属性和变量都具有完全的类型定义。这有助于提高代码的可读性和可维护性,同时减少潜在的错误和冲突。
-
样式去重:StyleX 鼓励在同一文件中编写样式和组件。这种方法有助于使样式在长期内更具可读性和可维护性。StyleX 能够利用静态分析和构建时工具来跨组件去重样式,并删除未使用的样式。
-
可测试性:StyleX 可以配置为输出调试类名,而不是功能性的原子类名。这可以用于生成快照,以便在对设计进行轻微更改时不会经常变化。通过这种方式,开发人员可以更轻松地测试和验证样式的正确性,从而提高开发效率和产品质量。
示例代码
import stylex from '@stylexjs/stylex'; const styles = stylex.create({ root: { padding: 10, }, element: { backgroundColor: 'red', }, }); const styleProps = stylex.apply(styles.root, styles.element);
下面是一个按钮组件的示例代码
import * as stylex from "@stylexjs/stylex"; const styles = stylex.create({ base: { appearance: "none", borderWidth: 0, borderStyle: "none", backgroundColor: "blue", color: "white", borderRadius: 4, paddingBlock: 4, paddingInline: 8, }, }); export default function Button({ onClick, children, }: Readonly<{ onClick: () => void; children: React.ReactNode; }>) { return ( <button {...stylex.props(styles.base)} onClick={onClick}> {children} </button> ); }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Google Colab 现已支持直接使用 🤗 transformers 库
Google Colab,全称 Colaboratory,是 Google Research 团队开发的一款产品。在 Colab 中,任何人都可以通过浏览器编写和执行任意 Python 代码。它尤其适合机器学习、数据分析和教育目的。从技术上来说,Colab 是一种托管式 Jupyter 笔记本服务。用户无需设置,就可以直接使用,同时还能获得 GPU 等计算资源的免费使用权限。 通过与 Colab 团队的共同努力,Colab 托管的运行时镜像现已默认集成了 Hugging Face transformers 库,只需简单执行 import transformers 即可轻松接入!对于使用 Colab 进行机器学习和深度学习研究的开发者来说,这是一个非常重要的更新。 如果你想使用最新版本的 transformers,Colab 团队也提供了一个简单的命令 !pip install transformers --upgrade,以便于随时更新至最新版本。 除了提升用户体验,这一更新还开启了一些有趣的新功能。例如,用户现在可以直接从 Pandas 读取 Hugging Face 数据集,这将大...
- 下一篇
芯瞳正式加入 openKylin,为社区贡献高质量的国产 GPU 解决方案!
近日,芯瞳半导体技术(山东)有限公司(以下简称“芯瞳”),签署openKylin社区CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin开源社区。 芯瞳(Sietium)成立于2019年,是一家自主设计研发GPU芯片及GPU解决方案的高科技公司,以行业先进的计算和图形渲染平台为依托,用高质量的产品和服务为云端、终端客户提供可持续发展的国产GPU解决方案;为数字时代的创新与发展提供算力支撑,构建自由算力的文明世界。 加入openKylin社区后,芯瞳将参与维护社区GPU SIG和Wayland SIG。凭借其自研的GPU显卡和深厚的行业经验,优化openKylin环境中显卡驱动的兼容性,确保与芯瞳显卡的完美适配。 在openKylin平台上,芯瞳显卡将展现其在图形显示、渲染、视频编解码和大规模计算等方面的优势,以此提升openKylin的用户体验,并提供持续的GPU产品升级和技术支持,为用户提供安全可靠的使用体验。具体计划如下: 积极参与社区合作,紧密关注社区的发展动态,与社区成员携手推动openKylin社区的生态及品牌建设,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19