Rspeedy 支持多种方式来对你的应用程序进行样式设计,包括:
CSS Modules: 创建具有局部作用域的 CSS 类,以避免命名冲突并提高可维护性。
Global CSS: 使用全局 CSS,对于习惯传统 CSS 的人来说很熟悉,但可能生成更大的 CSS 文件并且随着应用程序的增长难以管理样式。
CSS pre-processors: 使用常见的 CSS 预处理器,如 sass 或者 less 通过变量、嵌套规则等特性扩展了 CSS。
PostCSS: 用于转换 CSS 的工具。
Tailwind CSS: 一个 CSS 框架,通过组合工具类(utility classes)快速进行自定义设计。
CSS Modules 允许以模块化的方式 编写 CSS 代码,并且这些样式可以在 JavaScript 文件中被导入并使用。使用 CSS 模块可以自动生成唯一的类名,隔离不同模块之间的样式,并避免类名冲突。
如果想要使用非隔离的 CSS 样式,可以使用 Global CSS。
Rspeedy 默认支持 CSS Modules,你不需要添加额外的配置。我们的约定是使用 [name].module.css 文件名来启用 CSS Modules。
或者使用 Named Imports:
CSS Modules 也可以与 CSS 预处理器一起使用。只需按照 *.module.* 的模式命名样式文件即可。
E.g.: 下面这些文件都将会被认为是 CSS Modules
*.module.css*.module.less*.module.sass*.module.scss默认情况下,只有以 *.module.{css,scss,less} 结尾的文件才会被识别为 CSS Modules。
如果你想将其他 CSS 文件也视为 CSS Modules,可以通过在 Rspeedy 中配置 output.cssModules.auto 来实现。
如下面的例子所示:
给定此配置,以下 imports 将被识别为 CSS Modules:
当你在 TypeScript 代码中导入 CSS Modules 时,TypeScript 可能会提示该模块缺少类型定义:
要解决这个问题,你需要为 CSS 模块添加一个类型声明文件,请创建一个 src/rspeedy-env.d.ts 文件,并添加相应的类型声明。
create-rspeedy 会自动为你创建这个文件。
如果在添加类型声明后仍然存在类型错误,你可以尝试重启当前的 IDE,以确保 TypeScript 能正确识别类型定义。
@lynx-js/rspeedy/client 将提供如下类型声明:
它对于每个 CSS Modules 中含有的类名不够精确。