Expand description
Compile-time validated JavaScript macro for Viewpoint.
This crate provides a js! macro that validates JavaScript syntax at compile time,
similar to how serde_json::json! validates JSON. This catches JavaScript syntax
errors early, before they reach the browser.
§Features
- Compile-time validation: JavaScript syntax errors are caught during compilation
- Rust variable interpolation: Embed Rust expressions using
#{expr}syntax - Zero runtime overhead: Static strings when no interpolation is used
- Clear error messages: Points to the exact location of syntax errors
§Usage
ⓘ
use viewpoint_js::js;
use viewpoint_js_core::ToJsValue; // Needed for interpolation
// Simple expression - produces &'static str
let code = js!{ 1 + 2 };
// Arrow function
let code = js!{ () => window.innerWidth };
// With Rust variable interpolation (requires ToJsValue in scope)
let selector = ".my-class";
let code = js!{ document.querySelector(#{selector}) };
// Multi-line function
let code = js!{
(() => {
const items = document.querySelectorAll('li');
return items.length;
})()
};§Interpolation
Use #{expr} to embed Rust expressions into JavaScript. Values are automatically
converted to JavaScript representations via the ToJsValue trait:
- Strings are quoted and escaped
- Numbers are inserted as-is
- Booleans become
trueorfalse Option::Nonebecomesnull
Macros§
- js
- A macro that validates JavaScript syntax at compile time.