4 个版本
0.2.0 | 2024 年 7 月 7 日 |
---|---|
0.0.3 | 2023 年 11 月 27 日 |
0.0.2 | 2023 年 4 月 20 日 |
0.0.1 | 2023 年 3 月 27 日 |
#560 在 编程语言
每月 162 次下载
用于 2 crates
46KB
1K SLoC
“热情”项目的主要公共crate。
以下是使用 fervid
从 SFC 生成模块的方法
警告:此示例未来可能会发生变化。请注意,fervid 仍然不稳定。
use swc_core::{common::FileName, ecma::ast::Expr};
let input = r#"
<template><div>hello world</div></template>
"#;
// Parse
let mut parse_errors = vec![];
let mut parser = fervid_parser::SfcParser::new(input, &mut parse_errors);
let sfc = parser.parse_sfc().unwrap();
// Do the necessary transformations
let mut transform_errors = Vec::new();
let transform_options = fervid_transform::TransformSfcOptions {
is_prod: true,
scope_id: "filehash",
filename: "input.vue"
};
let transform_result = fervid_transform::transform_sfc(sfc, transform_options, &mut transform_errors);
// Create the context and generate the template block
let mut ctx = fervid_codegen::CodegenContext::with_bindings_helper(transform_result.bindings_helper);
let template_expr: Option<Expr> = transform_result.template_block.and_then(|template_block| {
ctx.generate_sfc_template(&template_block)
});
// Generate the module code
let sfc_module = ctx.generate_module(
template_expr,
*transform_result.module,
transform_result.exported_obj,
transform_result.setup_fn,
None,
);
// (Optional) Stringify the code
let compiled_code = fervid_codegen::CodegenContext::stringify(input, &sfc_module, FileName::Custom("input.vue".into()), false, false);
依赖项
~21MB
~449K SLoC