3个版本
0.1.2 | 2024年8月4日 |
---|---|
0.1.1 | 2022年2月8日 |
0.1.0 | 2022年2月8日 |
#252 in 编码
143,664每月下载量
在 140 个crate中使用 (7 直接使用)
16KB
107 代码行
序列化为JavaScript
此库提供了使用serde_json从serde::Serialize
到JavaScript的序列化。它还提供了一种非常简单的模板机制,以及 derive宏来自动为合适的类型生成它们。
[dependencies]
serialize-to-javascript = "0.1"
示例
序列化
use serialize_to_javascript::{Options, Serialized};
fn main() -> serialize_to_javascript::Result<()> {
let raw_value = serde_json::value::to_raw_value("foo'bar")?;
let serialized = Serialized::new(&raw_value, &Options::default());
assert_eq!(serialized.into_string(), "JSON.parse('\"foo\\'bar\"')");
Ok(())
}
模板
main.rs
:
use serialize_to_javascript::{default_template, DefaultTemplate, Options, Serialized, Template};
#[derive(Template)]
#[default_template("keygen.js")]
struct Keygen<'a> {
key: &'a str,
length: usize,
#[raw]
optional_script: &'static str,
}
fn main() -> serialize_to_javascript::Result<()> {
let keygen = Keygen {
key: "asdf",
length: 4,
optional_script: "console.log('hello, from my optional script')",
};
let _output: Serialized = keygen.render_default(&Options::default())?;
Ok(())
}
keygen.js
:
const keygenKey = __TEMPLATE_key__
const keygenLength = __TEMPLATE_length__
__RAW_optional_script__
// app logic, we are ensuring the length is equal to the expected one for some reason
if (keygenKey.length === keygenLength) {
console.log("okay!")
} else {
console.error("oh no!")
}
许可证
根据您的选择,受Apache License 2.0或MIT许可证许可。
除非您明确声明,否则您提交的任何有意包含在此crate中的贡献,根据Apache-2.0许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~0.7–1.6MB
~35K SLoC