feat(html): browser renderer — runtime-cached tagged templates
Each template literal parses once, keyed by its strings array in a WeakMap: static parts become a <template> with hole markers, renders clone and fill. Interpolated values never pass through innerHTML (child values become text nodes or adopted DOM; attributes go through setAttribute). Event handlers set as properties so nanomorph copies them. Document-level roots (<body>/<head>/<html>) parse via DOMParser because <template> drops them. Replaces the v7 browserify transform entirely — production speed is now a runtime property. Tests run in happy-dom (new devDependency), including a check that server and browser renderers serialize identical markup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
This commit is contained in:
co-authored by
Claude Fable 5
parent
501e8f5927
commit
84230b1770
+5
-2
@@ -11,8 +11,11 @@
|
||||
"node": ">=24"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node --test packages/core/test/ packages/html/test/"
|
||||
"test": "node --test packages/core/test/ packages/html/test/ packages/component/test/"
|
||||
},
|
||||
"repository": "choojs/choo",
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"happy-dom": "^20.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user