Riot js 使用其他库,如带有服务器端渲染的 jquery

Riot js using other libraries like jquery with server side rendering

本文关键字:服务器端 jquery js 其他 Riot      更新时间:2023-09-26

我正在尝试使用 jquery 对这样的组件的挂载事件进行 dom 操作。

<my-tag>
    <p>hi</p>
    <script>
        this.on('mount',funciton() {
            $('.abc').hide();
        })
    </script>
</my-tag>

这将引发如下所示的错误

TypeError: Cannot read property 'toString' of undefined
at ServerResponse.writeHead (_http_server.js:189:44)

如果我更换

$(".abc").hide()

console.log("test");

这非常有效。知道为什么会这样吗?

以下是版本详细信息

暴动版:

防暴-CLI: 2.3.14 - https://github.com/riot/cli

防暴编译器:2.3.22 - https://github.com/riot/compiler

更新

仅当将其放置在this.on('mount')中时,才会发生此问题

我尝试将其放在this.on('all')上,它工作正常。

我认为all不是一个有效的拳头事件。至于在服务器上使用jQuery,如果可能的话,我会避免这样做。如果你在组件中隐藏了一个元素,那么你应该使用 Riot 来切换一个 CSS 类。如果此元素位于组件外部,则应将事件发送到外部/全局可观察/pubsub处理程序中。如果你必须使用jQuery,你必须确保通过Node的要求加载jQuery,或者使用其他解决方案,如DomJS或Cheerio。