【问题标题】:NodeJS, how to render static HTML with Express 4?NodeJS,如何使用 Express 4 呈现静态 HTML?
【发布时间】:2014-08-12 17:25:31
【问题描述】:

我需要在 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 的,我找不到答案)

【问题讨论】:

    标签: node.js express rendering


    【解决方案1】:

    在没有视图引擎的 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】:
      app.get('/', function(req, res) {
          res.render('./public/danial/forms/form1.html');
      });
      

      [编辑]

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

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

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

      【讨论】:

      • 错误:Cannot find module 'html'
      • 渲染静态 html 文件使用静态中间件:"app.use(express.static(path.join(__dirname, 'public')));"
      • 我添加了它,但还不行。redirect 可以在公共目录下正常工作。
      • 但我不想使用重定向。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        目录结构:

        -> 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-14
          • 1970-01-01
          • 1970-01-01
          • 2012-03-20
          • 2012-03-13
          • 2019-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多