【发布时间】:2020-11-14 00:56:38
【问题描述】:
当使用m.route 时,它下面的所有内容是否都必须使用 Hyperscript 渲染(不包括 JSX)?是否可以将纯 HTML 与使用 Hyperscript 呈现的多个单独部分混合?
假设我有这个 HTML 代码:
<div id="root">
<div class="header">
<h3 id="header-text">Header Text</h3>
</div>
<div class="container">
<div id="content"></div>
<div id="sidebar"></div>
</div>
<div id="footer"></div>
</div>
是否可以使用 Mithril 来渲染 HTML 部分的多个部分?像这样(伪代码):
var root = document.getElementById('root');
var header = document.getElementById('header');
var content = document.getElementById('content');
var sidebar = document.getElementById('sidebar');
var footer = document.getElementById('footer');
var HeaderComponent = ...; // to render header text
var ContentComponent = ...; // main page content
var SidebarComponent = ...; // show links, bio, etc.
var Footer = ...; // contact info, etc.
var index = {
view: function(){
return [
{el: header, component: HeaderComponent},
{el: content, component: ContentComponent},
{el: sidebar, component: SidebarComponent},
{el: footer, component: FooterComponent}
];
}
};
m.route(root, '/', {
'/': index
});
以便在 HTML 代码中呈现 多个单独的部分,而不是仅具有单个根元素?我真的不想在 Mithril 中渲染整个 HTML 骨架模板,像这样:
❌不想要:
// I DON'T want this
m('div#root', [
m('div.header', [
m('h3#header-text', m(HeaderComponent))
]),
m('div.container', [
m('div#content', m(ContentComponent)),
m('div#sidebar', m(SidebarComponent))
]),
m('div#footer', m(FooterComponent))
]);
我知道它是可管理的,但我真的希望基本骨架模板位于 .HTML 文件中,以便以后可以无缝包装更多 HTML 标签,例如使用 Bootstrap 类(卡片、容器、行、额外需要包装 div 等)。谢谢:)!
【问题讨论】:
标签: mithril.js