Bassel Jhr نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 لقد لاحظت وجود كل من app.render و res.render في node.js ولكن في التوثيق الرسمي التفاصيل لكل منهما متشابهة، وكل منها يستدعي callback. ما هو الفرق الأساسي بينهما وماهي الحالات التي يجب فيها استخدام كل واحدة؟ 1 اقتباس
0 شرف الدين حفني نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 يوجد عدة فروق بينهما استاذ باسل مثل: app يعمل فى الroot level بينما res لا يعمل الا فى الroute/middleware دالة app.render يجب ان تمدها بالcallback وتقم بارجاع الhtml المزود فيه, بينما res.render فإن هذا الأمر اختياري, يمكنك ان لا تمدها بالcallback وفي هذه الحالة سوف تقوم الnodejs بإرجاع status code 200 اقتباس
0 Salah Eddin Beriani2 نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 فكر في app.render () كدالة مساعدة لتوليد سلاسل العرض المقدمة. يستخدم res.render () داخليًا app.render () لعرض طرق العرض. الاختلاف هو app.renderObject هو المسؤول الوحيد عن توليد views، ولكنه غير قادر على ارسال ال views لل client الشيفرة في الأسفل ستبين أكثر res.render = function(view, locals, cb){ app.render(view, locals, function(err, html){ if(typeof cb !== 'undefined'){ return cb(err, html); } res.send(html); }); }; اقتباس
1 Sam Ahw نشر 29 أغسطس 2021 أرسل تقرير نشر 29 أغسطس 2021 إن res.render يعتمد على app.render ضمنياً، فهو ليس شيء منفصل أو جديد. ومن بعض الفروقات الأساسية بينهما: تستطيع استدعاء app.render على المستوى الأول (الجذر root) أما res.render حصراً ضمن وسيط أو مسار. يعيد app.render دوماً صفحة html ضمن callback أما res.render يعيد ذلك فقط في حال قمت بوضع callback كمعامل ثالث، أما في حال قمت باستدعاء res.render دون معامل ثالث أو callback، سيتم إرسال صفحة html إلى الزبون تلقائياً مع رسالة بالرمز 200. مثال: //باستخدام app.render app.render('index', {title: 'app.render example'}, function(err, html) { console.log(html) }); //باستخدام res.render بدون المعامل الثالث app.get('/home', function(req, res) { res.render('index', {title: 'res.render example'}) }) //باستخدام res.render مع معامل ثالث app.get('/render', function(req, res) { res.render('index', {title: 'res.render example'}, function(err, html) { console.log(html); res.send('Hello'); }) }) أما من ناحية الاستخدام فعادةً يتم استخدام app.render عند إجراء render للصفحة دون الحاجة لإرسالها إلى المستخدم من خلال http، مثل حالات قوالب البريد الالكتروني مثلاً وغيرها. اقتباس
0 Ali Haidar Ahmad نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 (معدل) المستندات الخاصة بـ app.render: تقوم بتقديم عرض مع رد اتصال callback يستجيب مع السلسلة المقدمة. هذا هو المتغير على مستوى التطبيق لـ res.render () ، وبخلاف ذلك يتصرف بنفس الطريقة. أما المستندات لـ res.render: تقوم بتقديم عرض مع رد اتصال يستجيب مع السلسلة المقدمة. عند حدوث خطأ بعد ذلك ، يتم استدعاء (err )next. عندما يتم توفير رد نداء ، يتم تمرير كل من الخطأ المحتمل والسلسلة المقدمة ، ولا يتم تنفيذ أي استجابة تلقائية كيف يمكنني معرفة متى أستخدم أيهما؟ فيما يلي بعض الاختلافات: يمكنك استدعاء app.render على مستوى الجذر و res.render داخل مسار / برمجية وسيطة فقط. يقوم app.render دائمًا بإرجاع html في وظيفة رد الاتصال ، بينما يقوم res.render بذلك فقط عندما تحدد وظيفة رد الاتصال كمعامل ثالث. إذا اتصلت بـ res.render بدون المعامل الثالث / وظيفة رد الاتصال ، فسيتم إرسال html المقدم إلى العميل برمز الحالة . // app.render app.render('index', {title: 'res vs app render'}, function(err, html) { console.log(html) }); // logs the following string (from default index.jade) <!DOCTYPE html><html><head><title>res vs app render</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>res vs app render</h1><p>Welcome to res vs app render</p></body></html> // res.render // بدون الوسيط الثالث app.get('/render', function(req, res) { res.render('index', {title: 'res vs app render'}) }) //لكنه يرسله للعميل index.jade يعرض أيضًا //GET /render على text/html مع الحالة 200 والنص من نوع المحتوى // res.render مع الوسيط الثالث app.get('/render', function(req, res) { res.render('index', {title: 'res vs app render'}, function(err, html) { console.log(html); res.send('done'); }) }) //index.jade ويرسل "تم" إلى العميل بدلاً من ذلك من محتوى app.render يسجل مثل يستخدم res.render app.render داخليًا لتقديم ملفات القوالب. يمكنك استخدام وظائف التقديم لإنشاء رسائل بريد إلكتروني بتنسيق html. اعتماداً على هيكل التطبيق الخاص بك ، قد لا يكون لديك دائماً إمكانية الوصول إلى الكائن app . // على سبيل المثال داخل مسار خارجي // app.js var routes = require('routes'); app.get('/mail', function(req, res) { // app object is available -> app.render }) app.get('/sendmail', routes.sendmail); // routes.js exports.sendmail = function(req, res) { // can't use app.render -> therefore res.render } تم التعديل في 30 أغسطس 2021 بواسطة Ali Haidar Ahmad اقتباس
السؤال
Bassel Jhr
لقد لاحظت وجود كل من app.render و res.render في node.js ولكن في التوثيق الرسمي التفاصيل لكل منهما متشابهة، وكل منها يستدعي callback. ما هو الفرق الأساسي بينهما وماهي الحالات التي يجب فيها استخدام كل واحدة؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.