Leptos 开发体验改进
你可以做一些事情来改进使用 Leptos 开发网站和应用程序的体验。 你可能需要花几分钟时间设置你的环境以优化你的开发体验,特别是如果你想跟随本书中的示例进行编码。
1) 设置 console_error_panic_hook
默认情况下,在浏览器中运行 WASM 代码时发生的 panic 只会在浏览器中抛出一个错误,并显示一条无用的消息,例如 Unreachable executed
以及指向 WASM 二进制文件的堆栈跟踪。
使用 console_error_panic_hook
,你可以获得一个实际的 Rust 堆栈跟踪,其中包含 Rust 源代码中的一行。
设置非常简单:
- 在你的项目中运行
cargo add console_error_panic_hook
- 在你的
main
函数中,添加console_error_panic_hook::set_once();
如果不清楚,点击此处查看示例。
现在,你应该在浏览器控制台中看到更好的 panic 消息!
2) 在 #[component]
和 #[server]
中进行编辑器自动补全
由于宏的性质(它们可以从任何内容扩展到任何内容,但前提是输入在那一刻完全正确),rust-analyzer 很难进行正确的自动补全和其他支持。
如果你在编辑器中使用这些宏时遇到问题,你可以明确告诉 rust-analyzer 忽略某些过程宏。 尤其是对于 #[server]
宏,它注释函数体但实际上并不转换函数体内的任何内容,这可能非常有用。
从 Leptos 0.5.3 版本开始,添加了对 #[component]
宏的 rust-analyzer 支持,但如果你遇到问题,你可能也希望将 #[component]
添加到宏忽略列表中(见下文)。
请注意,这意味着 rust-analyzer 不知道你的组件 props,这可能会在 IDE 中生成它自己的一组错误或警告。
VSCode settings.json
:
"rust-analyzer.procMacro.ignored": {
"leptos_macro": [
// optional:
// "component",
"server"
],
}
VSCode with cargo-leptos settings.json
:
"rust-analyzer.procMacro.ignored": {
"leptos_macro": [
// optional:
// "component",
"server"
],
},
// 如果为 `ssr` 功能配置的代码显示为非活动状态,
// 你可能希望告诉 rust-analyzer 默认启用 `ssr` 功能
//
// 你也可以使用 `rust-analyzer.cargo.allFeatures` 来启用所有功能
"rust-analyzer.cargo.features": ["ssr"]
neovim with lspconfig:
require('lspconfig').rust_analyzer.setup {
-- Other Configs ...
settings = {
["rust-analyzer"] = {
-- Other Settings ...
procMacro = {
ignored = {
leptos_macro = {
-- optional: --
-- "component",
"server",
},
},
},
},
}
}
Helix, in .helix/languages.toml
:
[[language]]
name = "rust"
[language-server.rust-analyzer]
config = { procMacro = { ignored = { leptos_macro = [
# Optional:
# "component",
"server"
] } } }
Zed, in settings.json
:
{
-- Other Settings ...
"lsp": {
"rust-analyzer": {
"procMacro": {
"ignored": [
// optional:
// "component",
"server"
]
}
}
}
}
SublimeText 3, under LSP-rust-analyzer.sublime-settings
in Goto Anything...
menu:
// 此处的设置将覆盖 "LSP-rust-analyzer/LSP-rust-analyzer.sublime-settings" 中的设置
{
"rust-analyzer.procMacro.ignored": {
"leptos_macro": [
// optional:
// "component",
"server"
],
},
}
3) 使用 Rust Analyzer 设置 leptosfmt
(可选)
leptosfmt
是 Leptos view!
宏的格式化程序(你通常会在其中编写 UI 代码)。 因为 view!
宏启用了一种 'RSX'(类似于 JSX)风格的 UI 编写方式,所以 cargo-fmt 很难自动格式化 view!
宏内的代码。 leptosfmt
是一个解决格式化问题的 crate,它可以使你的 RSX 风格的 UI 代码看起来整洁漂亮!
leptosfmt
可以通过命令行或在代码编辑器中安装和使用:
首先,使用 cargo install leptosfmt
安装该工具。
如果你只想从命令行使用默认选项,只需从项目的根目录运行 leptosfmt ./**/*.rs
即可使用 leptosfmt
格式化所有 Rust 文件。
如果你希望将编辑器设置为使用 leptosfmt
,或者希望自定义 leptosfmt
体验,请参阅 leptosfmt
github 仓库的 README.md 页面 上的说明。
请注意,建议在每个工作区的基础上设置你的编辑器与 leptosfmt
,以获得最佳结果。