jqueryと従来のASPを使用してサーバー側でHTMLドキュメントを生成する
-
03-07-2019 - |
質問
これが私の質問です
クラシックASPがサーバー側のJavaScriptをサポートしていることを知っていれば、「サーバー側のHTML」を生成できますか?のようなクライアントに送信する Response.write $(page).html()
もちろん、複雑な構造を解析して操作するのは簡単なので、jQueryを使用してそれを行うのは素晴らしいことです。
これを行うことを妨げると思う唯一の問題は、古典的なaspが3つのオブジェクト(応答、サーバー、要求)のみを公開し、それらのどれも「dom building facility」を提供しないことですjQueryが常に使用するようなものです。どうすれば空のドキュメントオブジェクトを作成できますか?
編集:パフォーマンスに関して賢明な方法ではないことは間違いありません。なぜ必要なのかを説明しましょう。
実際には、さまざまなJSONフィードを、HTMLの複雑なネストされたレポートに変換しています。複雑なセットや長いレポートであっても、クライアント側は非常にうまく機能します。
ただし、一部のクライアントは「フォーマット済み」にアクセスしたいと考えています。 EXCELなどのツールを使用したレポート(javascriptが枯渇したwebqueryを使用)。そのため、その特定のケースでは、jQueryが動作する内容の.html()コンテンツをresponse.writeできる必要があります。
解決
このような状況では、XML DOMをブラウザーで使用するHTML DOMの代理として使用します。
jQueryはXML DOMを操作できますが、jQueryはウィンドウがそのコンテキストに存在することを期待しています。 jQueryをfす(または微調整する)ことで、サーバー側で動作する可能性がありますが、非常に壊れやすい可能性があります。
個人的には、XML DOMの操作が少し楽になるヘルパー関数の小さなライブラリを使用しています。たとえば:-
function XmlWrapper(elem) { this.element = elem; }
XmlWrapper.prototype.addChild = function(name) {
var elem = this.element.ownerDocument.createElement(name);
return new XmlWrapper(this.element.appendChild(elem));
}
ページコードでできること:-
var dom = Server.CreateObject("MSXML2.DOMDocument.3.0");
dom.loadXML("<html />");
var html = XmlWapper(dom.documentElement);
var head = html.addChild("head");
var body = html.addChild("body");
var tHead = body.addChild("table").addChild("tHead");
「未加工の」DOMを操作するコードを作成すると、XmlWrapperクラスのメソッドとしてリファクタリングできるパターンが表示されます。
他のヒント
はい、可能です。いいえ、それはまったく高速ではありません。また、jQueryはクライアントにのみ関連することを行うためによく使用されるので、それを行う理由はありません。
これを行う理由として考えられるものは何ですか? HTML出力を作成するのではなく、サーバー側でDOMドキュメントを構築する場合は、ASPにインターフェイスできる何らかの種類のXMLライブラリが存在する可能性が高くなります。 jQueryはクライアント側のもの用ですが、サーバー側のJavaScriptは一般的なユースケースではありません。