【问题标题】:Mithril template converter usage秘银模板转换器使用
【发布时间】:2026-01-08 22:20:06
【问题描述】:

我正在尝试完成这里发生的确切事情:https://arthurclemens.github.io/mithril-template-converter/index.html

基本上,我让用户将 HTML 字符串插入文本框,并且我想将该字符串转换为可以与 m 辅助方法一起使用的对象。

例如我必须转换这个:

<div class="foo"><p>bar</p></div>

变成这样:

m("div", {"class":"foo"}, 
  m("p", 
    "bar"
  )
)

理想情况下,我正在寻找某种类型的工作流程,例如:

function myComponent() {
  let myHTML = "<div class="foo"><p>bar</p></div>";
  return(m(convertHTML(myHTML));
}

我研究了各种超文本/vdom 转译器,但它们都没有按照 Mithril 期望的确切格式创建树,所以我需要与上面列出的网站非常相似的功能才能工作。

我猜这根本不可能,因为对 m 的嵌套函数调用方面。

【问题讨论】:

    标签: javascript html dom tree nodes


    【解决方案1】:

    我能够通过 eval 即时使用模板:

    import { templateBuilder } from "mithril-template-builder"
    
    const source = '<div class="foo"><p>bar</p></div>';
    
    const template = templateBuilder({
      source
    });
    
    function myComponent(props) {
      let object = eval(template);
      return(object);
    }
    

    【讨论】: