【问题标题】:Rendering `html` when using `jade` templating engine, in Express在 Express 中使用 `jade` 模板引擎时渲染 `html`
【发布时间】:2013-08-22 13:58:41
【问题描述】:

如何在保持模板引擎为jade 的同时渲染html 文件?

app.set('view engine', 'jade'); 是我将模板引擎设置为jade 的地方,我想做类似的事情

app.get('/world', function(req,res){
    res.render('profile.html', );

渲染html 文件。

我正在使用 express.js 在 node.js 中编程。

注意:我已经 require html 使用 var html=require('html');

编辑:

我知道 res.render 不需要使用,因为 html 已经渲染。 res.send(profile.html); 给出profile is undefined 的错误

【问题讨论】:

  • html 不应该被渲染。它是静态的,只需发送文件。最好将它与 express static 一起使用。
  • res.send(profile.html) 不起作用。使用 res.send 发送“html”文件的语法是什么
  • 读取文件profile.html然后发送。

标签: node.js express


【解决方案1】:

您可以渲染翡翠文件 (.jade) 但不能渲染 html 文件,因为结果将是 html。渲染html文件是什么意思?

将您的res.render('profile.html') 替换为res.sendfile('[path_to_the_file]profile.html')

【讨论】:

  • 我想看看一些html文件是如何渲染的,而不需要改变模板引擎。它基本上在开发过程中。在您看到它们的样子之前将所有找到的 html 文件都转换成翡翠是很痛苦的。
  • 我真的不明白... 你不能渲染 html 文件,因为它们已经是 html。只需执行 res.send('profile.html') 就不会被渲染。
  • 所以我用 res.send('profile.html'); 代替 res.render ?不工作。
  • 错误信息是什么?您可能必须指出路径(它是隐含的 res.render 正在查看视图目录,但不是 res.render 正在查看当前目录)
  • res.send('profile.html');只写“profile.html”,而 res.send(profile.html);说,'profile' 没有定义。
【解决方案2】:

我认为你可以使用consolidatemustache 模板引擎

npm install consolidate mustache

var engines = require('consolidate'); app.engine('html', engines.mustache); app.set('view engine', 'html');

【讨论】:

    【解决方案3】:

    如果您想测试 .html 文件,最简单的方法是临时更改引擎并添加合并和 swig 模块

    npm 安装合并

    npm install swig

    cons = require('consolidate'),
    
    app.engine('html', cons.swig);
    app.set('view engine', 'html');
    app.set('views', __dirname + '/views');
    

    然后你可以简单地像这样渲染:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2011-06-26
      • 2016-08-23
      相关资源
      最近更新 更多