19 releases
| 0.1.32 | Mar 19, 2026 |
|---|---|
| 0.1.31 | Mar 19, 2026 |
| 0.1.20 | Feb 28, 2026 |
#782 in Template engine
Used in 3 crates
(via van-compiler)
94KB
2K
SLoC
van-signal-gen
Compiles <script setup> reactive code into signal-based JavaScript that performs direct DOM operations — no virtual DOM, no framework runtime (~4KB).
Part of the Van template engine.
Usage
use van_signal_gen::generate_signals;
let script = r#"
const count = ref(0)
function increment() { count.value++ }
"#;
let template = r#"<button @click="increment">{{ count }}</button>"#;
if let Some(js) = generate_signals(script, template, &[]) {
// js contains signal runtime + direct DOM update code
println!("{js}");
}
Key Functions
| Function | Description |
|---|---|
generate_signals(script, template, modules) |
Generate client-side JS from script setup + template |
extract_initial_values(script) |
Extract ref() initial values for server-side interpolation |
analyze_script(script) |
Analyze signals, computed, watchers in script |
walk_template(html, reactive_names) |
Find reactive bindings in template HTML |
How It Works
- Analyze
<script setup>— identifyref()signals,computed(),watch(), functions - Walk template HTML — find
{{ expr }},:attr,@event,v-if/v-forbindings - Generate JS that wires signals to DOM nodes via direct
element.textContent/setAttributecalls
License
MIT
Dependencies
~13MB
~232K SLoC