24 个版本
0.1.23 | 2020年6月23日 |
---|---|
0.1.22 | 2020年6月17日 |
0.1.18 | 2019年11月21日 |
0.1.17 | 2019年10月16日 |
0.1.7 | 2019年7月29日 |
#1382 in Web 编程
67 每月下载量
用于 3 crates
98KB
3K SLoC
Rust / Elm 基础全栈 Web 框架。
发布 Crates
- 必须在 crates.io 上拥有特定 Crates 的所有权
- 必须使用 cargo token 通过终端 登录
- 按递增方式更改 Cargo.toml 中的当前版本(数字位数应根据功能更改)。
- 执行
cargo check --all
应没有任何编译错误,没有警告。 - 执行
cargo fmt
- 执行
git add <更改文件>
- 执行
git commit -m "与您的更改相关的消息"
- 执行
git push
- 执行
cargo package
- 执行
cargo publish
,应成功发布。
变更日志
未发布
- 添加了基于模板的服务器端渲染。您可能希望使用
fn main() {
for entry in walkdir::WalkDir::new("templates") {
let entry = entry.unwrap();
eprintln!("cargo:rerun-if-changed={}", entry.path().display());
}
}
// with the following in your Cargo.toml
// [package]
// build = "build.rs"
//
// [build-dependencies]
// walkdir = "2"
- Elm:页面更改后滚动到页面顶部
- Elm:在延迟 200ms 后发送消息,让应用程序显示加载对话框
- Elm:重大更改:已删除 Realm.Utils.{link, plainLink, newTabLink},请改用 Element 版本。
- Elm: 在
Realm.elm
中添加了方法navigate : String -> Cmd (Msg msg)
. - Elm: 在
Utils.elm
中添加了方法mif : Maybe a -> (a -> E.Element msg) -> E.Element msg
. - 添加了错误跟踪。仍然需要清理恐慌。
- 在
realm::base::In
中添加了以下方法- is_anonymous: 如果
ud
cookie 为空,则返回 true。 - is_authenticated: 如果
ud
cookie 不为空,则返回 true。 - is_local: 如果
HOST
是 localhost, 127.0.0.1 或 127.0.0.2,则返回 true。
- is_anonymous: 如果
- 添加了方法
error<T>(key: &str, message: &str)
。返回包含key
和message
的FormError
。 - 在
RequestConfig
中添加了方法json<T>(&mut self, name: &str)
。接受字段名name
并返回请求体中存在的值。 - 以下数据库相关方法和属性已移动到
realm::base::pg
和realm::base::sqlite
- connection()
- connection_with_url()
- RealmConnection
- 通用的 ud cookie:应用程序可以定义自己的
ud
cookie 结构。此更改与之前的 realm 版本不兼容。请参阅 UDMIGRATION.md 指南。 - 在
Cargo.toml
中启用以下功能以使用数据库- Postgres: postgres+postgres_default
- SQLite: sqlite+sqlite_default
0.1.18 - 2019年11月21日
- 修复:当服务器发生错误时,修复
Realm.Test
,报告错误并继续运行测试。 realm::RequestConfig::required()
等方法现在返回realm::Error(InputError)
而不是realm::request_config::Error
,中间件现在只需捕获单个错误即可
let resp = match forward::magic(&in_) {
Ok(r) => Ok(r),
Err(e) => {
match e.downcast_ref::<realm::Error>()
{
Some(realm::Error::PageNotFound {message}) => fifthtry::http404(&in_, message.as_str()),
Some(realm::Error::InputError {error}) => fifthtry::http404(&in_, &error.to_string()),
_ => Err(e)
}
}
};
- 增加了对额外Elm端口的支持。应用程序可以将端口添加到
window.realm_extra_ports
,在Javascript
中使用。应用程序可以创建Ports.elm
并指定端口,例如:port something : JE.Value -> Cmd msg
。应用程序可以创建一个JavaScript文件,并将端口和回调函数添加到window.realm_extra_ports
window.realm_extra_ports = {
"something": function(data) {
}
};
// the realm app is available as window.realm_app. so you can also do:
window.addEventListener("foo", function(evt) { window.realm_app.ports.foo.send(evt) })
- 增加了使用自定义HTML的支持。应用程序可以创建
index.html
,Realm在渲染页面时会使用这个文件。index.html
必须包含特殊字符串:__realm_title__
和__realm_data__
,这些将被页面标题和页面数据替换。 - 移除了
APP_NAME
功能,使用自定义index.html
来覆盖脚本名称。 - 增加了
window.realm_app_init()
和window.realm_app_shutdown()
钩子,如果您想在Realm应用程序初始化后和关闭时执行某些操作。 - 增加了
In.darkMode
。
0.1.17 - 2019年10月16日
realm::base::CiString
现在是公开的。- Elm向后不兼容:将
Realm.Utils.html
和Realm.Utils.htmlLine
的签名更改为接受Realm.Utils.Rendered
作为输入,而不是String
。 Realm.Test
:用红色显示失败Realm.Test
:键盘快捷键e
在显示所有测试与仅显示失败的测试之间切换Realm.Test
:在测试完成后,如果测试失败,则仅显示失败的测试。- 向
realm::request_config::RequestConfig
添加了.required2()
、.required3()
和.required4()
。这些变体比多次调用.required()
的优点是:一次显示所有错误,而.required()
只显示响应中的第一个错误。 - 增加了
Realm.Utils.maybe : Json.Decode.Decoder a -> Json.Decode.Decoder (Maybe a)
,这是Json.Decode.maybe
的更好版本。 - 增加了
Realm.Utils.iff : Bool -> E.Element msg -> E.Element msg
(显示某物或如果为false则使用E.none)。 - 添加了
Realm.Utils.escEnter
,用于为 Escape 和 Enter 键附加事件处理器。还添加了.onEnter
、.onSpaceAndEnter
和.button
。 - 在调试模式下,将 SQL 查询记录到控制台。
- 添加了
Realm.Utils.mapIth
和.mapAIth
,用于更新列表/数组中的第 i 个成员。 - 修复:当提交包含查询参数的 URL 时,正确构造 URL。
- 添加了
realm::is_realm_url()
和realm::handle()
来处理与 realm 相关的 URL。 - 修复:
realm::base::db::db_test()
现在会在由 diesel 管理的事务深度错误时回滚。 - 修复:如果服务器发送的嵌套 elm 模块不在
Elm
中,则getApp()
返回 none 而不是崩溃,因此与发送非嵌套、缺失的 elm 模块时发生的情况保持一致。 - 修复:在测试模式下,如果缺少 elm 模块,将显示适当的消息并继续测试。
- 添加了
realm::Response::redirect(next)
和realm::Response::redirect_with(next, StatusCode)
方法。在Layout
模式下,跳转到next
页面。在HTML/API
模式下,发送带有location
标头的 HTTP 3xx 响应作为next
。 - 如果配置了
APP_NAME
环境变量,则elm.js
的位置为:/static/APP_NAME/elm.js
。默认位置为/static/elm.js
。 - 重新添加了
realm::base::db::db_test()
。
0.1.16 - 2019 年 9 月 23 日
realm::base::db::RealmConnection
:在发布构建中,这是PgConnection
的别名,而在调试构建中,它是DebugConnection
的别名,该别名打印 SQL 查询和执行时间。它还会打印每个建立的连接及其建立连接所需的时间。- 移除了未使用的
realm::base::UserStatus
类型。 - 添加了
Realm.Utils.html
和Realm.Utils.htmlLine
助手,用于在 Elm 中渲染服务器生成的 HTML。- 它们依赖于 html-parser,因此请在 'frontend' 文件夹内添加
elm install hecrj/html-parser
。
- 它们依赖于 html-parser,因此请在 'frontend' 文件夹内添加
- 添加了
realm::base::FormError::empty()
,并弃用了::new()
。 - 添加了
realm::base::FormError::single()
以创建一次性错误消息。 - 添加了
realm::Error
和realm::request_config::Error
,以便在中间件中进行以下错误处理
if e.downcast_ref::<realm::Error>().is_some()
|| e.downcast_ref::<realm::request_config::Error>().is_some()
{
fifthtry::http404(&in_, error.as_str())
} else {
Err(e)
}
- 添加了
realm::Or404
trait 并在Result<T, failure::Error>
上实现了它,因此可以在路由中将任意错误转换为 404。 - 添加了
realm::request_config::RequestConfig.optional()
,以获取可选值。 - 当使用
.param()
或.optional()
获取输入值时,现在开始,json 中的null
和查询参数中的空值被视为与缺失键相同。 - 将
.param()
重命名为.required()
,这更适合与.optional()
配合使用。 - 将 test.rs、storybook.rs 和 iframe.rs 移动到 realm。
0.1.15 - 2019 年 9 月 14 日
- 添加了
RequestConfig.param()
以从请求中获取参数。 - 弃用了
RequestConfig.get()
,现在应使用.param()
。 - 添加了
Realm.tuple : JD.Decoder a -> JD.Decoder b -> JD.Decoder (a, b)
和Realm.tupleE : (a -> JE.Value) -> (b -> JE.Value) -> ((a, b) -> JE.Value)
。 - 修复:在导航过程中URL中的查询参数不会丢失。
- 修复:在某些情况下,在 /storybook/ 中的设备切换有bug。
0.1.14 - 2019年9月10日
realm::Response
现在实现了serde::Serialize
。
贡献者 ✨
感谢这些可爱的人们 (emoji key)
此项目遵循 all-contributors 规范。欢迎任何形式的贡献!
依赖关系
~27–40MB
~657K SLoC