gpt4 book ai didi

jquery - Ember Fastboot Jquery

转载 作者:行者123 更新时间:2023-12-03 23:04:21 25 4
gpt4 key购买 nike

我刚刚在我的项目中添加了 ember-cli-fastboot ( github ),以便为爬虫机器人提供预渲染服务器。

按照安装步骤操作后,我在启动服务器时收到错误消息 (ember fastboot --serve-assets):

jQuery is not defined
ReferenceError: jQuery is not defined
at <anonymous>:66304:16 [...]

缓存中是否有需要清理的内容?我是否遗漏了一些明显的东西?

最佳答案

FastBoot 在 Node 中渲染,特别是在 V8 虚拟机中,这意味着它无法访问运行 jQuery 所需的 DOM。此外,作为沙盒虚拟机,它无法访问 FastBoot 代码运行所在的同一全局命名空间(除非您显式地将其传递到沙盒中,请参阅: https://www.ember-fastboot.com/docs/user-guide 上的“使用白名单节点依赖项”)。

如果您要通过 jQuery 节点模块传递 jQuery,并在应用程序代码中公开,您仍然无法在 FastBoot 模式下运行大部分 jQuery API,因为它严重依赖于 DOM API,而这些 API 根本不支持此环境中不存在。

但有时您需要在浏览器中进行一些 DOM 操作,以处理复杂的动画或用户交互。建议的解决方案是将所有需要 DOM 操作的代码保留在 didInsertElementwillInsertElement 组件生命周期事件处理程序中,这些处理程序明确不在 FastBoot 模式下运行。

不推荐的另一个选项是通过检查来包装对出错的 jQuery 的调用,以确保您不在 FastBoot 中(请参阅上面的用户指南中的“FastBoot 服务”)

在这种情况下,您不需要将模块列入白名单,因为 FastBoot 永远不应该执行依赖于 jQuery 的代码。

旁注: Ember 清楚地呈现 HTML,并且它需要某种方法来构造类似 DOM 的结构。 FastBoot 作者创建了 SimpleDOM它在应用程序实例初始化时传递给渲染引擎。它是 DOM 方法的一个非常小的子集,用于构造层次结构,然后序列化为 HTML 字符串。

关于jquery - Ember Fastboot Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com