首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >成员Fastboot Jquery

成员Fastboot Jquery
EN

Stack Overflow用户
提问于 2015-12-08 17:37:30
回答 1查看 1.2K关注 0票数 5

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

在完成以下安装步骤后,在启动服务器(ember fastboot --serve-assets)时会收到一条错误消息:

代码语言:javascript
运行
复制
jQuery is not defined
ReferenceError: jQuery is not defined
at <anonymous>:66304:16 [...]

缓存里有什么东西需要清理吗?我漏掉了什么明显的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-08 14:35:19

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

如果要通过jQuery节点模块传递jQuery,并在应用程序代码中公开,仍然无法在FastBoot模式下运行很多jQuery的API,因为它在很大程度上依赖于这个环境中根本不存在的DOM。

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

另一个不建议使用的选项是将对jQuery的调用包装在错误的检查中,以确保您不在FastBoot中(参见上面用户指南中的“FastBoot服务”)。

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

附带注意:成员清楚地呈现HTML,它需要某种方式来构造类似DOM的结构。FastBoot作者创建了在Application时传递给呈现引擎的SimpleDOM。它是一个非常小的DOM方法子集,用于构造层次结构,然后序列化为HTML字符串。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34162398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档