0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Facebook开源StyleX如何在JavaScript中写CSS呢?

OSC开源社区 来源:OSC开源社区 2023-12-14 10:03 次阅读

Meta(原 Facebook)开源了全新的 CSS-in-JS 库 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 (
    
  );
}






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • javascript
    +关注

    关注

    0

    文章

    515

    浏览量

    53736
  • CSS
    CSS
    +关注

    关注

    0

    文章

    109

    浏览量

    14338
  • 选择器
    +关注

    关注

    0

    文章

    106

    浏览量

    14499
  • 静态分析
    +关注

    关注

    1

    文章

    38

    浏览量

    3869

原文标题:Facebook开源StyleX , 在JavaScript中写CSS

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Arm新Arm Neoverse计算子系统(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Arm宣布了两款新的Arm Neoverse计算子系统(CSS),它们基于“迄今为止最好的一代Neoverse技术”。是什么让这些新产品在拥挤的计算技术领域脱颖而出? Arm的两个新Arm
    的头像 发表于 04-24 17:53 936次阅读
    Arm新Arm Neoverse计算子系统(<b class='flag-5'>CSS</b>):Arm Neoverse <b class='flag-5'>CSS</b> V3和Arm Neoverse <b class='flag-5'>CSS</b> N3

    何在TC264/TC377使用FOC

    何在TC264/TC377使用FOC?GTMMOLD 的相关配置实在太过了混乱了,实在有看不到,没有什么相关的中文资料或者开源代码可供参考。
    发表于 01-19 07:59

    javascript属于前端吗

    和动态性。 JavaScript通常被认为是前端开发的基础。前端开发包括网页的设计和开发,以及通过HTML、CSSJavaScript来实现网页的用户界面和交互。HTML负责定义网页的结构,
    的头像 发表于 12-03 11:43 1343次阅读

    javascript规定了几种语言类型

    JavaScript是一种强大的编程语言,主要用于在网页上实现动态的交互效果和功能。它不仅可以与HTML和CSS配合使用来构建网页,还可以用于开发各种类型的应用程序,包括网络应用程序、桌面应用程序
    的头像 发表于 12-03 11:37 722次阅读

    javascript的变量可以包含

    JavaScript是一种强大的编程语言,广泛应用于网页开发和动态网页交互。作为一种灵活的语言,JavaScript允许开发人员声明和操作各种类型的变量。在JavaScript,变量
    的头像 发表于 12-03 11:34 659次阅读

    怎样开启javascript功能

    JavaScript是一种客户端脚本语言,它可以在网页实现动态交互和功能增强。在现代网页开发,几乎所有的浏览器都支持JavaScript,因此,开启
    的头像 发表于 12-03 11:13 3379次阅读

    JavaScript的用途和功能

    开发中发挥着非常重要的作用,并为用户提供了更为丰富的使用体验。下面我们将详细讨论JavaScript的用途和功能。 首先,JavaScript用于网页开发的动态内容。通过使用JavaScri
    的头像 发表于 12-03 11:12 810次阅读

    javascript指什么

    JavaScript是一种高级编程语言,通常用于为网页添加交互功能。它是一种面向对象的语言,旨在通过编写代码来控制网页的行为,使用户能够与网页进行动态交互。JavaScript能够与HTML和CSS
    的头像 发表于 12-03 11:11 807次阅读

    javascript:;怎么解决

    javascript:” 是一个JavaScript伪协议,它通常出现在URL地址栏或链接,用于执行JavaScript代码。然而,有时它可能会导致一些问题,特别是在一些不支持
    的头像 发表于 11-26 14:39 6980次阅读

    浏览器怎么打开javascript

    浏览器是一种用于浏览和访问互联网页面的应用程序,而JavaScript是一种常用的网页编程语言,用于给网页添加交互和动态效果。本文将详细探讨如何在浏览器打开JavaScript,并解
    的头像 发表于 11-26 11:25 2327次阅读

    浏览器支持javascript怎么设置

    浏览器是我们上网冲浪的工具,而JavaScript是一种广泛使用的脚本语言,可以在网页添加交互性和动态性。因此,确保浏览器正确支持JavaScript是非常重要的。 首先,我们需要理解什么是浏览器
    的头像 发表于 11-26 11:22 1341次阅读

    js如何在控制台输入输出

    ,我们来看如何在控制台中进行输出操作。在JavaScript,使用console.log()方法来在控制台输出
    的头像 发表于 11-26 11:17 2772次阅读

    javascript深入浅出

    。它最初被设计为在浏览器运行,用于实现网页的交互效果和动态功能。随着Node.js的出现,JavaScript也可以在服务器端运行。 JavaScript基本语法 JavaScript
    的头像 发表于 11-16 10:34 2207次阅读

    javascript可以关闭吗

    **JavaScript是一种编程语言,它不能被“关闭”。**JavaScript是一种客户端脚本语言,它通常嵌入在HTML页面。当用户访问一个包含JavaScript的网页时,浏览
    的头像 发表于 11-16 10:20 1354次阅读

    javascript怎么开启

    在浏览器启用 JavaScript 的方法如下: 在浏览器启用 JavaScript 对于大多数浏览器,您可以在浏览器的设置或选项启用
    的头像 发表于 11-16 10:16 1790次阅读