当前位置:  开发笔记 > 后端 > 正文

Ember Fastboot Jquery

如何解决《EmberFastbootJquery》经验,为你挑选了1个好方法。

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

执行以下安装步骤后,启动server(ember fastboot --serve-assets)时出现错误消息:

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

缓存中有什么要清理吗?我错过了一些明显的东西吗



1> 小智..:

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

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

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

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

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

旁注: Ember清楚地呈现HTML,它需要一些方法来构建类似DOM的结构.FastBoot作者创建了SimpleDOM,它在Application Instance init时传递给渲染引擎.它是用于构造层次结构的DOM方法的一小部分,然后序列化为HTML字符串.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有