37 个版本 (6 个破坏性更新)
0.7.0 | 2023 年 6 月 30 日 |
---|---|
0.6.1 | 2023 年 6 月 27 日 |
0.5.5 | 2023 年 4 月 15 日 |
0.4.2 | 2023 年 4 月 5 日 |
0.1.3 | 2022 年 11 月 9 日 |
#1830 in 网页编程
69KB
1K SLoC
Unreact
使用 Handlebars 和 Scss 的 Rust 静态站点生成框架。
在此处提交问题 here
使用方法
要快速开始,请查看 Unreact Template
将最新版本添加到您的 Cargo.toml
依赖项中
unreact = "*"
使用 "dev"
功能
功能
unreact/dev
- 创建本地开发服务器以托管文件。unreact/watch
-unreact/dev
的超集。还监听文件更改并重新加载服务器。
使用 --dev
或 -d
参数运行,以使 unreact::is_dev()
函数返回 true
。只有当 unreact/dev
或 unreact/watch
功能启用时才有效。
# Run with `watch` feature, and dev mode
cargo run --features unreact/watch -- --dev
# Run without `watch` (for a production server)
cargo run
开发模式下的热重载
启用 "watch"
功能后,开发服务器将监视资产文件夹(templates
、styles
和 public
)中的更改;可以更改配置)。如果检测到更改,客户端将重新加载。
注意:如果 Rust 文件(在
src
中)被更改,这不会重新加载客户端!(见下文)
开发模式下的路由监控
这将监视 src
中的文件,并重新加载程序。客户端应自动尝试重新连接。
cargo watch -x "run --features unreact/watch -- --dev" -w src -w Cargo.toml
小型示例
创建一个包含单个索引页面的站点
use unreact::prelude::*;
fn main() -> Result<(), Error> {
// Create the app
// Using default config, not in dev mode, and an example url
let mut app = Unreact::new(Config::default(), false, "https://example.com")?;
// Create an index route
// This uses the template 'page.hbs' in 'templates/'
// A json object with a value for 'foo' is passed into the template
app.index("page", object! { foo: "World!" })?;
// Compile it!
app.run()
}
大型示例
use unreact::prelude::*;
#[test]
fn large_example() -> Result<(), Error> {
// Custom config
let config = Config {
strict: true,
..Config::default()
};
// Run with `is_dev`
let mut app = Unreact::new(config, is_dev(), "https://example.com")?;
// Set the global variable 'smiley'
app.globalize(object! {
smiley: "(^_^)"
});
// Create some routes
// Note that these methods will never return an error in dev mode. The error will be handled on `app.run()`
app.index("page", object! {message: "World!"})?
.not_found("404", object! {})?
.route_raw("hello", "this is my hello page".to_string())
.route("article", "other/article", object! {})?;
// Compiles normally, or opens a dev server and listens if in dev mode
app.run()
}
与 GitHub Pages 自动编译
在 .github/workflows/build.yaml
name: Build
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout 🛎️
uses: actions/checkout@v3
# Run compilation script with Rust
- name: Build 🔧
run: cargo run
# Push changes with plugin
- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
# This must be the build directory
folder: ./build
依赖项
~9–23MB
~302K SLoC