NodeJS,如何使用Express 4呈现静态HTML?

时间:2014-08-12 17:25:32

标签: node.js express rendering

我需要在express 4中呈现HTML文件,我写这样的东西但效果不好。

  app.route('/form1').get(function(req,res){
        res.sendfile('./public/danial/forms/form1.html');
  });

此代码可以发送HTML文件,但它确切地发送HTML文件,并且不发送HTML文件需要它们的css或js文件,这是日志:

   GET /form1 304 2.743 ms - -
   GET /css/bootstrap.css 404 2.284 ms - -
   GET /css/bootstrap-theme.css 404 2.193 ms - -
   GET /css/bootstrap-switch.css 404 2.226 ms - -
   // and many others

我需要做这样的事情:

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

我该如何解决?

(许多其他问题适用于快递3,我无法找到答案)

4 个答案:

答案 0 :(得分:3)

app.get('/', function(req, res) {
    res.render('./public/danial/forms/form1.html');
});

[编辑]

要渲染静态html文件,请使用静态中间件:

app.use(express.static(path.join(__dirname, 'public')));

这样做是告诉express在应用程序的公共目录中查找静态文件。

答案 1 :(得分:3)

在没有View引擎的Express 4中呈现HTML

以以下目录结构为例..

-> root
   -> node_modules
      -> express
      -> html
   -> public
      -> pages
         -> index.html
   -> app.js

<强> app.js

var express = require('express');
var app     = express();
var path    = require("path");

// set static directories
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function (req, res) {
    res.sendFile(path.join(__dirname+ '/public/pages/index.html'));
});

var port = process.env.PORT || 5000;
app.listen(port);
console.log('Listening on port ',  port);

注意:如果您收到此错误.. Cannot find module 'html'因为您缺少HTML节点模块。从项目根目录运行npm install html命令以解决此问题。

答案 2 :(得分:0)

最后,我自己找到了答案。我使用ejs模板并将HTML文件的扩展名更改为ejs并对其进行渲染,对于需要的文件,我使用公用文件夹。

答案 3 :(得分:0)

使用Node Js Express 4渲染静态HTML的示例

Dir struct。:

-> root
   -> node_modules
   -> views
      -> index.html
   -> app.js

app.js:

var express = require('express');
var app = express();
var path    = require("path");
var engines = require('consolidate');
app.use(express.static(path.join(__dirname, 'views')));
app.engine('html', engines.mustache);
app.get('/', function(req, res){
    res.render('index.html');
});

app.listen(8080);