Angular Universal 和 jQuery(忽略服务器上的 $)

Oma*_*mar 5 jquery angular-universal

我的角度应用程序将 jquery 用于需要它作为依赖项和其他客户端任务的各种插件。

问题是,universal 无法理解要做什么,因为 jquery 操作服务器端不存在的 dom 元素。

错误参考错误:$未定义

最终目标只是忽略服务器端的 jquery 任务。我读过建议将所有 dom 操作放在仅限客户端的服务中的解决方案,以及使用if (isBrowser) { /* jQuery here */ }...的另一个解决方案,但这对于包装每个 dom 情况并不理想。

https://medium.com/@zainzafar/localstorage-with-angular-universal-2a111fb4af72

这两个都是不错的想法,但我正在寻找更优雅的东西。这将忽略 jquery ($) 而不会出错。例如,以下补丁(放入server.ts)每次都不会出错document或被window使用。无需修改客户端文件即可忽略服务器端。

const domino = require('domino');
const fs = require('fs');
const path = require('path');
const template = fs.readFileSync('./dist/browser/index.html').toString();
const win = domino.createWindow(template);
global['window'] = win;
global['document'] = win.document;
Run Code Online (Sandbox Code Playgroud)

在你告诉我不要使用 jQuery 之前。相信我。我知道。但这个决定不在我手中,这不是我在这里要求的。

编辑

我遇到了这篇文章。他找到了一个简单的解决方案来抑制本地存储错误和窗口错误...我正在寻找像这样的 jquery 解决方案 https://blog.khophi.co/localstorage-undefined-angular-server-side-rendering/