1

我有一个 marko 网站,其中有一些通过 for 循环调用的动态组件:

/pages/note/index.marko

import layout from "../../layouts/base"

<${layout} title="test">
    <for|card| of=input.cards>
        <${card} />
    </for>
</>

这给出了一组“注释”(只是其他带有内容的标记文件),我想根据请求动态地填充页面(这在服务器中处理得很好)。它可以很好地加载这些笔记。

但是,当我让卡片标记文件使用一个组件时,该组件只有一半可以工作。

note1/index.marko

<math>5x+1=11</math>

数学/索引.marko

class {
    onCreate() {
        console.log("CREATED") // runs
    }

    onMount() {
        console.log("MOUNTED") // doesn't run
        // eventually I plan to run some math rendering code here
    }
}

<span><${input.renderBody} /></span>

问题是浏览器端永远不会运行。另外,我在浏览器 编辑中遇到了这个莫名其妙的错误:更改了路由中的渲染。不知何故,错误消失了

路由.js

...
app.get("/note.html", async (req, res, next) => {
    let title = req.query.title || "" // get the requested card
    let dependencies = request(`./notes/${title}/dependencies.json`) || [] // get all of the linked cards to the requested card
    let cards = [title, ...dependencies].map(note => request(`./notes/${note}`)) // get the marko elements for each card
    // by this point, "cards" is a list with marko templates from the /notes/ directory

    // render
    let page = request(`./pages/note`, next)
    let out = page.render({"title": title, "cards": cards}, res)
}
...

我的文件结构是这样设置的:

server.js
routes.js
pages/
    note/
        index.marko
notes/
    note1/
        index.marko
    note2...
components/
    math/
        index.marko
layouts/
    base/
        index.marko

使用:node、express、marko 和 lasso。

4

1 回答 1

1

您的自定义标记与本机 MathML元素<math>发生冲突,这就是您仅在浏览器中收到该错误的原因。<math>

尝试将其命名为其他名称,例如<Math>or <my-math>

于 2019-08-19T17:37:40.500 回答