#style #css #scoping #macro #sass #modules-like #import-style

css-loader-macros

一个简单的宏,用于在Rust中使用类似CSS Modules的作用域包含样式文件。

1个不稳定版本

0.0.1 2022年8月18日

#5#scoping


css-loader 中使用

MIT/Apache

9KB
156 代码行

rust-css-loader

一个简单的宏,用于在Rust中使用类似CSS Modules的作用域包含样式文件。

示例

main.rs

use yew::prelude::*;

import_style!("src/styles.scss");

#[function_component(App)]
fn app() -> Html {
    html! {
        <h1 class={styles.header}>{ "Hello World" }</h1>
    }
}

fn main() {
    println!("Hello, world!");
    yew::start_app::<App>();
}

styles.scss

$textcolor: yellow;
$fontsize: 18px;

.header {
  color: $textcolor;
  font-size: $fontsize;
}

注意

样式是相对于 CARGO_MANIFEST_DIR 导入的,基本上是包含 Cargo.toml 文件的目录。最好像在JavaScript中一样进行相对路径导入,然而,由于Rust编译器的一个小 限制,目前无法实现。

其次,同样的限制阻止了我们有一种方式“链接”样式文件到Rust源文件,因此修改样式文件不会触发重建/重新加载。

这两个问题将在Rust编译器中此API稳定后得到解决。

.css 文件直接导入,而 .scss 文件则由 rsass 编译并自动加载。

依赖

~5MB
~109K SLoC