最近在看leptos
,之前使用过bulma
作为css库,感觉样式太少,想结合tailwindcss
.
leptos
的官方仓库里有例子: tailwind_csr_trunk
但他作为最后结果,本文就介绍下各个部分和是怎么集合的.
主体其实就两个:
cargo + leptos + trunk
这一套作用是编译为wasm.
最小的初始化是新建rust工程,然后增加leptos依赖,写一个hello world之后用trunk运行.
命令如下:
1 | cargo new leptos-test |
在项目根目录放入一个最简单的html:
1 |
|
main.rs
中写入一个hello world:
1 | use leptos::{component, mount_to_body, prelude::*, view, IntoView, Scope}; |
使用trunk serve
运行即可(指定端口--port port
)
至此这部分完成,这部分和tailwindcss独立.
npm + tailwindcss
这一套是生成css.
安装就是用tailwindcss官网的安装方式:
1 | npm install -D tailwindcss |
在tailwind.config.js配置中加上对*.rs文件的扫描(让它扫描到view!宏的内容)
1 | module.exports = { |
input.css和官网一样, 放在项目根目录:
1 | @tailwind base; |
最后将css输出到一个位置即可(不要用dist 会和trunk的冲突):
1 | npx tailwindcss -i ./input.css -o ./output.css --watch |
可以将上面main.rs的p中增加一些class,例如text-3xl等.
至此,它会根据view!内的使用的class动态生成output.css
这个是因为leptos使用了JSX的语法,所以也能被tailwindcss正确处理.
至此在根目录生成了output.css
引入output.css
在index.html直接link会失败,因为这个index.html被trunk处理,无法直接link.
要参考trunk文档使用特殊的标签:
1 | <link data-trunk href="output.css" rel="css" /> |
第一个是引入tailwindcss生成的css,第二个是其他的一些静态文件可以放在根目录的public文件夹中,会被复制进去.
至此就结束了,这个流程中trunk负责wasm和整体的构建,tailwindcss就是css的生成,是两个不同的workflow.