快速开始

把 PreCSS 加入 MoonBit 项目,用几行代码编译第一段样式

返回 Playground,实时试用

MOONBIT · DEVELOPER QUICKSTART

在 MoonBit 项目里使用 PreCSS

PreCSS 是库,不是框架:它只负责把 SCSS、SASS、LESS 或 CSS 源码编译成 CSS。

安装

在项目目录添加 Mooncakes 依赖:

moon add conglinyizhi/precss

核心公开 API 的包别名是 @precss

编译一段样式

显式选择 SCSS 入口,得到 CSS 字符串:

let css = @precss.compile_scss(".card { color: #7c3aed; }")

构建脚本或服务端可以保存这个字符串,交给页面或静态资源使用。

Rabbita(可选集成)

PreCSS 是库:它不规定页面如何组织。Rabbita 是可选的 UI / SSR 集成环境;使用 Rabbita 时,可以在构建期或服务端调用 @precss.compile_scss 生成 CSS,再注入 `<style>` 标签或写入静态资源。

let css = @precss.compile_scss(".card { color: #7c3aed; }")

fn page_component(css : String) -> @rabbita.Val[@html.Html] {
  let (state, _emit) = @rabbita.create_pure_state(
    css,
    update=fn(model, _msg) { model },
  )
  state.view(css => @html.html([
    @html.node("head", @html.Attrs::build(), [
      @html.node("style", @html.Attrs::build(), [@html.text(css)]),
    ]),
    @html.node("body", @html.Attrs::build(), []),
  ]))
}

async fn render_page(css : String) -> String {
  let page = @rabbita.new(fn() { page_component(css) })
  page.render(url="http://127.0.0.1/", timeout=5000)
}

如果不想内联,也可以在构建期把 css 写入静态文件,再由 Rabbita 页面用普通的 stylesheet 链接加载;Rabbita 不是 PreCSS 的必需依赖。

支持 SCSS · SASS · LESS · CSS