توليد وثيقة HTML من جانب الخادم مع مسج وآسيا والمحيط الهادئ الكلاسيكي

StackOverflow https://stackoverflow.com/questions/159011

سؤال

وهنا هو سؤالي،

وسيكون من الممكن، مع العلم أن الكلاسيكية دعم آسيا والمحيط الهادئ من جانب الخادم جافا سكريبت، لتكون قادرة على توليد "HTML جانب الخادم" لإرسالها إلى العميل مثل   $ Response.write (صفحة). هتمل ()

وبالطبع سيكون أمرا رائعا لاستخدام مسج للقيام بذلك لأنه من السهل تحليل بنية معقدة والتلاعب بها.

والمشكلة الوحيدة التي يمكنني أن أفكر في أن من شأنه أن يمنعني من القيام بذلك سيكون أن آسيا والمحيط الهادئ الكلاسيكي يكشف سوى 3 الكائنات (ردا على ذلك، الخادم، الطلب) واحدا منهم تقديم "دوم مرافق المبنى" مثل مسج واحد يستخدم كل زمن. كيف يمكن لنا ربما إنشاء كائن مستند فارغ؟

تعديل : لعلي ان اوافق معك أنها بالتأكيد ليست فكرة جيدة الأداء الحكمة. اسمحوا لي أن أشرح لماذا كنا في حاجة إليها.

وأنا في الواقع تحويل مختلف تغذية JSON في معقدة، تقرير متداخلة أحيانا في HTML. العميل أنه يعمل بشكل جيد حقا، حتى مع مجموعة معقدة وتقرير طويل.

ولكن بعض من عملائنا ترغب في الوصول إلى تقرير "المنسقة" باستخدام أدوات مثل EXCEL (باستخدام webquery التي المنضب في أي جافا سكريبت). حتى في تلك الحالة بالذات، وأود أن تحتاج إلى أن تكون قادرة على response.write محتوى هتمل () ما يمكن أن يكون عمل مسج.

هل كانت مفيدة؟

المحلول

وأنا مثل هذه الحالات I استخدام DOM XML كما بديل لDOM HTML كنت أود أن يكون في المتصفح.

ومسج يمكن التلاعب في DOM XML لكن مسج تتوقع نافذة ليكون حاضرا في سياقها. قد يكون من الممكن أن تخدع مسج (أو قرص عليه) بحيث انها ستعمل من جانب الخادم ولكن يمكن أن تكون هشة جدا.

وPersonnally أنا مجرد استخدام مكتبة صغيرة من وظائف المساعد التي تجعل من التلاعب و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.

نصائح أخرى

ونعم كان ذلك ممكنا. لا، انها لن تكون سريعة على الإطلاق، وأنا لا أرى أي سبب لفعل ذلك في كثير من الأحيان يستخدم مسج لفعل الأشياء التي هي ذات الصلة فقط على العميل.

ولدي أن نسأل ما السبب ممكن أن يكون لديك للقيام بذلك؟ إذا كنت ترغب في بناء وثيقة DOM من جانب الخادم بدلا من كتابة إخراج HTML، ثيريس من المرجح أن يكون مكتبة XML من نوع ما يمكنك واجهة لASP. مسج هو للأشياء من جانب العميل، بينما من جانب الخادم جافا سكريبت موجود ليس لها حالة الاستخدام المشترك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top