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 编程

Download history 109/week @ 2024-02-25 7/week @ 2024-03-03 8/week @ 2024-03-10 9/week @ 2024-03-17 64/week @ 2024-03-31 2/week @ 2024-04-07 1/week @ 2024-04-21

67 每月下载量
用于 3 crates

MIT 许可证

98KB
3K SLoC

Rust / Elm 基础全栈 Web 框架。

All Contributors

发布 Crates

  1. 必须在 crates.io 上拥有特定 Crates 的所有权
  2. 必须使用 cargo token 通过终端 登录
  3. 按递增方式更改 Cargo.toml 中的当前版本(数字位数应根据功能更改)。
  4. 执行 cargo check --all 应没有任何编译错误,没有警告。
  5. 执行 cargo fmt
  6. 执行 git add <更改文件>
  7. 执行 git commit -m "与您的更改相关的消息"
  8. 执行 git push
  9. 执行 cargo package
  10. 执行 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。
  • 添加了方法 error<T>(key: &str, message: &str)。返回包含 keymessageFormError
  • RequestConfig 中添加了方法 json<T>(&mut self, name: &str)。接受字段名 name 并返回请求体中存在的值。
  • 以下数据库相关方法和属性已移动到 realm::base::pgrealm::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.htmlRealm.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.htmlRealm.Utils.htmlLine 助手,用于在 Elm 中渲染服务器生成的 HTML。
    • 它们依赖于 html-parser,因此请在 'frontend' 文件夹内添加 elm install hecrj/html-parser
  • 添加了 realm::base::FormError::empty(),并弃用了 ::new()
  • 添加了 realm::base::FormError::single() 以创建一次性错误消息。
  • 添加了 realm::Errorrealm::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)


Amit Upadhyay

💻 📖 🤔 🚇 🚧

SWAPNIL SHARMA

💻 🤔

Akash Agarwal

💻 🤔

Abrar Khan

💻 🤔 🚧

Asit Kumar Singh

💻 🤔

Vaibhav Agnihotri

💻

Pranit Bauva

💻 🚧

Jatinderjit Singh

💻 🤔

Gagan Jakhotiya

💻 🤔

Saleem Jaffer

💻 🤔

Sourabh Deokar

💻 🤔

Sourabh garg

🤔

Arpita Jaiswal

💻

Deepak Angrula

🤔

Sonali Goyal

💻 🤔

此项目遵循 all-contributors 规范。欢迎任何形式的贡献!

依赖关系

~27–40MB
~657K SLoC