使用jQuery进行Angular 2+服务器端渲染

时间:2017-11-05 11:57:15

标签: javascript jquery angular angular-universal

我遇到了一些令人虚弱的东西。

我现在在一个项目中相当远,而且在某些时候它肯定需要在服务器端呈现。

通过网络应用程序,用户可以上传个人资料图片等图片以及#34;常规"图片。

我使用Foliotek的Croppie(https://github.com/Foliotek/Croppie)进行裁剪,效果很好,正是我需要的。

但Croppie依赖于jQuery。昨天我发现,如果我想让应用程序服务器端呈现,那可能是个问题。

所有的jQuery都用在 ngAfterViewInit生命周期钩子中,所以我希望这能使它成为服务器端的渲染证明吗?

我知道有可用的ng2-img-cropper,但我并不那么热衷于实现那个。但是,如果我可以将ng2-img-cropper与服务器端渲染一起使用,那么我将不得不这样做。

或者有什么东西要好得多吗?

3 个答案:

答案 0 :(得分:1)

您可以在服务器上使用jQuery,使用Node,AFAIK。只需浏览npm并搜索合适的模块即可。不要忘记,Node没有DOM实现,所以你也需要虚拟DOM模块。

例如,您可以将this jQuery wrapperthis DOM implementation一起使用。例如:

npm install jsdom
npm install jQuery

var jsdom = require('jsdom').jsdom
var myWindow = jsdom().createWindow()
var $ = require('jQuery')
var jq = require('jQuery').create()
var jQuery = require('jQuery').create(myWindow)

$("<h1>test passes</h1>").appendTo("body")
console.log($("body").html());

答案 1 :(得分:0)

我发现有一个Angular Universal(服务器端渲染)入门项目可用:

https://github.com/angular/universal-starter

我克隆它并像我在开发版中一样实现了Croppie,一切正常!

所以...我想知道为什么我多次读过如果在你的Angular 2+ SSR项目中使用jQuery会完全破坏。 Max Schwarzmuller也在Udemy的讲座中这么说。无论如何。我很高兴发现一切仍然有效。

答案 2 :(得分:0)

据我所知,每当jquery使用“ Window”时,ssr就会感到困惑,因为在服务器中我们没有window(窗口在浏览器中)。 但通常,jQuery可以正常工作。