اذهب إلى المحتوى

السؤال

نشر

لدي مجلّد pages فيه بعض صفحات الموقع ومنها index.html، وأحاول عرضها من خلال node.js بالكود التالي:

var express = require('express');
var app = express.createServer();

app.use(express.staticProvider(__dirname + '/public'));

app.get('/', function(req, res) {
    res.render('index.html');
});

app.listen(3000, '127.0.0.1')

ولكن يظهر لي هذا الخطأ:

Error: Cannot find module 'html'

كيف يمكنني حل هذه المشكلة؟

Recommended Posts

  • 1
نشر

يوجد عدة طرق لإرسال الصفحات من خلال node.js ومنها استخدام محرك القوالب jade من خلال إنشاء الملف index.jade ضمن المجلّد الذي يحوي صفحات الموقع لديك pages وإضافة الكود التالي:

include plain.html

ثم وفي نفس المجلّد نجعل الصفحة plain.html تحوي كود HTML الخاص بهذه الصفحة بهذا الشكل:

<!DOCTYPE html>
...

وأخيراً في كود node.js من طرف الخادم نستطيع تمرير هذه الصفحة بالشكل التالي:

res.render(index)

ومع تحديث نسخة express.js بدءً من النسخة الثالثة، أصبح بإمكانك استخدام المحرّك ejs من خلال تحميل الحزمة التالية:

npm install ejs --save

وتمرير الصفحات بالشكل التالي:

app.set('views', __dirname + '/pages');

app.engine('html', require('ejs').renderFile);

أما في نسخة express 3.4 ومافوق يمكنك استخدام المحرّك ejs يالشكل التالي:

app.set('view engine', 'ejs');

app.get('/home', function (req, res)
{
    res.render('home.html');
});

 

  • 0
نشر (معدل)

تستطيع قراءة ملف في Node.js بإستخدام مكتبة fs

var  fs = require('fs');

app.get('/', (req, res) => {
   
  fs.readFile('./index.html', function (err, html) {
      if (err) {
          throw err; 
      }       
			res.send(html);
  });
});

لكن سيظل من الإفضل لك استعمال محركات القوالب (templating engine)

وهناك الكثير منها : 

  • PUG
  • EJS
  • Handlebars
تم التعديل في بواسطة MoJaffer
اضافة معلومة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...