LearnNewsExamplesServices
Frontmatter
id7130
titleString-Based VDOM Templates
stateClosed
labels
enhancementepic
assigneestobiu
createdAtJul 30, 2025, 1:00 PM
updatedAtAug 3, 2025, 3:09 AM
githubUrlhttps://github.com/neomjs/neo/issues/7130
authortobiu
commentsCount1
parentIssuenull
subIssues
7131 Dev Mode: Main Thread Addon for Live Parsing
7132 Production Mode: Build-Time Parsing with `parse5`
7136 Alternative Dev Mode: In-Worker Parsing with `parse5`
7137 Template Syntax Specification
7138 Parser: Interpolation and Data Type Handling
7139 Parser: Component vs. HTML Tag Recognition
7140 Bundle `parse5` for Browser Compatibility
7141 Enhance Learning Content
7142 Expand Test Coverage with Real Components
7143 Code Quality Refinement
7144 Create a Real-World Example
7146 Fix Conditional Rendering and Add Tests
7147 Refactor `render` to `initVnode` and `createTemplateVdom` to `render`
7148 Create a Robust VDOM-to-String Serializer
7149 Refactor Build-Time Parser to be AST-Based for Robustness
7150 Build-Time `html` Template to VDOM Conversion
7151 Finalize and Integrate AST-based Build Process
7152 Showcase Nested Templates and Component Usage
7153 Introduce `attributeNameMap` for Robust Attribute Handling
7154 Fix Self-Closing Custom Component Tags
7155 Fix Build-Time Conditional Template Rendering
7156 Finalize Build-Time AST Transformation
7158 Create a Reusable, AST-Based Build-Time Processor
7159 Optimize Build Process with a Pre-emptive Regex Check
7160 Integrate Template Processing into `dist/development` Build
7161 Integrate Template Processing into `dist/production` Build
7162 Add Error Resilience to AST Processor
7163 Create "Under the Hood: HTML Templates" Guide
subIssuesCompleted28
subIssuesTotal28
blockedBy[]
blocking[]
closedAtAug 3, 2025, 3:09 AM

String-Based VDOM Templates

Closed v10.3.3 enhancementepic
tobiu
tobiu commented on Jul 30, 2025, 1:00 PM

This epic covers the exploration and implementation of a new feature allowing developers to use string-based template literals (HTML-like syntax) to define the VDOM for functional components. This will provide a more familiar and intuitive way to structure component views compared to the current JSON-based VDOM approach.

An early proof-of-concept (PoC) already exists in the following files:

  • test/siesta/tests/functional/HtmlTemplateComponent.mjs
  • src/functional/component/Base.mjs (see enableHtmlTemplates_ config)
  • src/functional/util/html.mjs
tobiu assigned to @tobiu on Jul 30, 2025, 1:00 PM
tobiu added the enhancement label on Jul 30, 2025, 1:00 PM
tobiu added the epic label on Jul 30, 2025, 1:00 PM
tobiu added sub-issue #7131 on Jul 30, 2025, 1:01 PM
tobiu added sub-issue #7132 on Jul 30, 2025, 1:02 PM
tobiu referenced in commit a3bbca7 - "String-Based VDOM Templates #7130 early stage PoC" on Jul 30, 2025, 1:02 PM
tobiu referenced in commit 284497b - "#7130 WIP" on Jul 31, 2025, 1:32 AM
tobiu added sub-issue #7136 on Jul 31, 2025, 9:02 AM
tobiu added sub-issue #7137 on Jul 31, 2025, 9:32 AM
tobiu added sub-issue #7138 on Jul 31, 2025, 9:33 AM
tobiu added sub-issue #7139 on Jul 31, 2025, 9:34 AM
tobiu referenced in commit 9f58f44 - "String-Based VDOM Templates #7130 => adding the epic md file into the repo, while in development" on Jul 31, 2025, 9:48 AM
tobiu added sub-issue #7140 on Jul 31, 2025, 9:55 AM
tobiu added sub-issue #7141 on Jul 31, 2025, 12:50 PM
tobiu added sub-issue #7142 on Jul 31, 2025, 12:50 PM
tobiu added sub-issue #7143 on Jul 31, 2025, 12:54 PM
tobiu added sub-issue #7144 on Jul 31, 2025, 12:55 PM
tobiu referenced in commit c27cf88 - "#7130 WIP" on Jul 31, 2025, 3:54 PM
tobiu referenced in commit f2d091e - "#7130 regex enhancement for storing non-lowercase attributes => config names" on Jul 31, 2025, 4:13 PM
tobiu referenced in commit 8247da6 - "#7130 resolving all tests inside test/siesta/tests/functional/HtmlTemplateComponent.mjs" on Jul 31, 2025, 4:18 PM
tobiu referenced in commit f06c076 - "#7130 guide and epic md file update" on Jul 31, 2025, 4:26 PM
tobiu referenced in commit b1648ad - "#7130 guide update" on Jul 31, 2025, 4:40 PM
tobiu added sub-issue #7146 on Jul 31, 2025, 4:56 PM
tobiu added sub-issue #7147 on Jul 31, 2025, 9:20 PM
tobiu referenced in commit b60c0e2 - "#7130 updated learning content for clarity (mounted vs rendered)" on Jul 31, 2025, 9:54 PM
tobiu added sub-issue #7148 on Aug 1, 2025, 1:06 AM
tobiu added sub-issue #7149 on Aug 1, 2025, 1:07 AM
tobiu referenced in commit df2dfee - "#7130 splitting HtmlTemplateProcessor into /HtmlTemplateProcessorLogic.mjs for supporting client-side & builds (WIP)" on Aug 1, 2025, 1:08 AM
tobiu referenced in commit a16d33f - "#7130 WIP - not fully stable yet" on Aug 1, 2025, 1:09 AM
tobiu referenced in commit bbd71b2 - "#7130 test adjustments for the rendering refactoring" on Aug 1, 2025, 1:16 AM
tobiu referenced in commit e79ab5e - "#7130 fixed the unit tests regression" on Aug 1, 2025, 2:05 AM
tobiu added sub-issue #7150 on Aug 1, 2025, 12:09 PM
tobiu added sub-issue #7151 on Aug 1, 2025, 12:33 PM
tobiu added sub-issue #7152 on Aug 1, 2025, 2:23 PM
tobiu referenced in commit 2b1eb64 - "#7130 processVdomForComponents() => simplification" on Aug 1, 2025, 2:30 PM
tobiu added sub-issue #7153 on Aug 1, 2025, 3:01 PM
tobiu added sub-issue #7154 on Aug 1, 2025, 4:14 PM
tobiu added sub-issue #7155 on Aug 1, 2025, 4:40 PM
tobiu added sub-issue #7156 on Aug 1, 2025, 6:07 PM
tobiu referenced in commit 47b3b0e - "#7130 functional.component.Base: only import template conversion logic for the dev mode" on Aug 1, 2025, 6:10 PM
tobiu referenced in commit d103789 - "#7130 epic update" on Aug 1, 2025, 6:10 PM
tobiu referenced in commit 9f04ced - "#7130 functional.component.Base: devmode check fix" on Aug 1, 2025, 7:33 PM
tobiu referenced in commit 4901a6d - "#7130 removed a now obsolete file" on Aug 2, 2025, 1:09 AM
tobiu referenced in commit 74bc55f - "#7130 functional.util.HtmlTemplateProcessor: docs formatting" on Aug 2, 2025, 1:12 AM
tobiu referenced in commit 16b31b7 - "#7130 functional.util.HtmlTemplateProcessor: cleanup" on Aug 2, 2025, 1:16 AM
tobiu referenced in commit 1abb26f - "#7130 functional.util.HtmlTemplateProcessor: cleanup" on Aug 2, 2025, 1:16 AM
tobiu added sub-issue #7158 on Aug 2, 2025, 1:28 PM
tobiu added sub-issue #7159 on Aug 2, 2025, 1:29 PM
tobiu added sub-issue #7160 on Aug 2, 2025, 1:30 PM
tobiu added sub-issue #7161 on Aug 2, 2025, 1:33 PM