0

jQueryを使用するクライアント側のJSライブラリ(lib.jsと呼ぶ)があります。ライブラリはajaxを使用してAPIを起動し、受け取ったjsonレスポンスに基づいてhtmlをレンダリングします。jQueryを使用してサーバーサイドのHTMLレンダリングを実行できますか?

SEOに関する懸念から、私は、lib.jsが行うすべてのクライアント側の作業を行い、サーバ側でhtmlを作成し、このhtmlで応答する別のnodejsベースのAPIを作成したいと考えています。キャッチは、サーバー側で同じクライアントサイドライブラリ(lib.js)を使用したいので、lib.jsに対する変更がバックエンドAPIのhtml応答にも影響するようにします。

私は基本的にクライアント側のJSライブラリをあまり変更せずに、クライアント側のJSをサーバー上で実行しようとしています。

私はjqueryとjsdomのノードモジュールを調べましたが、この解決策に近づける決定的な方法は見つかりませんでした。これを行うためのより良いノードモジュールはありますか?この問題をターゲットにした良い記事はありますか?

+0

ReactJSの使用を検討しましたか?サーバー側のレンダリングはnodejsでうまく動作し、反応します。 jQueryコードを 'componentDidMount()'ライフサイクルフック内に置いておく限り、jQueryをそのまま使用することはできます。これはnodeJSにDOMが存在しないため実行されません。 – flocks

+0

@flocksに感謝しますが、ReactJSはオプションではありません。 – Anuj

答えて

0

私はそれを行う方法があるとは確信していませんし、すべてのライブラリ/プログラムがその能力を備えているかどうかは分かりません。 1つは、phantom and export the resulting html after page load thereの使用です。別のものはjsdomで、それはスクリプトを実行することができ、そこから得られたHTMLを使用することができます。しかし、両方のオプションには、そこからhtmlを使用するだけで、すべてのアタッチされたイベントリスナーが失われるという欠点があります。またonloadイベントが再度トリガーされるので、DOMが既に存在する場合は、スクリプトが狂ってしまうかもしれません。私はこれがうまくいくとは思っていませんが、スクリプトやスクリプトにも依存しています。

関連する問題