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

    文章

    511

    浏览量

    53403
  • CSS
    CSS
    +关注

    关注

    0

    文章

    104

    浏览量

    14182
  • 选择器
    +关注

    关注

    0

    文章

    103

    浏览量

    14322
  • 静态分析
    +关注

    关注

    1

    文章

    34

    浏览量

    3836

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

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

收藏 人收藏

    评论

    相关推荐

    何在TC264/TC377使用FOC

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

    javascript属于前端吗

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

    javascript规定了几种语言类型

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

    javascript指什么

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

    javascript:;怎么解决

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

    浏览器怎么打开javascript

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

    浏览器支持javascript怎么设置

    for Mobile)。浏览器可以将HTML、CSSJavaScript代码转化为可视化的网页。 要确保浏览器正确地支持JavaS
    的头像 发表于 11-26 11:22 775次阅读

    javascript可以关闭吗

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

    Web开发教程 - JavaScript、 HTML、 CSS -岩石纸剪刀游戏_第7节 #硬声创作季

    WebHTMLjavascriptCSS
    充八万
    发布于 :2023年08月05日 09:15:05

    Web开发教程 - JavaScript、 HTML、 CSS -岩石纸剪刀游戏_第6节 #硬声创作季

    WebHTMLjavascriptCSS
    充八万
    发布于 :2023年08月05日 09:14:15

    Web开发教程 - JavaScript、 HTML、 CSS -岩石纸剪刀游戏_第5节 #硬声创作季

    WebHTMLjavascriptCSS
    充八万
    发布于 :2023年08月05日 09:13:25

    何在HyperRAM读/

    的 flexspi 接口。该板最初配备了 hyperFLASH,但经过修改以接受组合芯片。 不幸的是,我不知道如何让芯片正常工作。我可以从 hyperflash 访问和启动,但想知道如何在 HyperRAM 读/
    发表于 05-31 13:22

    你们知道前端大神是怎么学CSS的嘛

    有人说,要成为前端高手很容易:先学好 HTML/CSS/JavaScript 三剑客,再学会三大前端框架——Vue/React/Angular,快则三个月,慢则半年,前端的工作就没有搞不定的了。
    的头像 发表于 05-30 11:26 405次阅读

    何在Basic和Javascript之间交换变量?

    我正在尝试执行以下操作 在 basic 我有一个变量让我们说 x 如何使用 Javascript 访问该变量 让 javascript 对其执行一些操作 让 Basic 从 javascri
    发表于 05-10 12:52

    何在BASIC和JavaScript之间交换变量?

    我正在尝试执行以下操作 在 basic 我有一个变量让我们说 x 如何使用 Javascript 访问该变量 让 javascript 对其执行一些操作 让 Basic 从 javascri
    发表于 05-10 08:21