【问题标题】:ExpressJS, recognize view engin in module structureExpress JS,在模块结构中识别视图引擎
【发布时间】:2011-12-17 23:48:41
【问题描述】:

我创建了文件:

app.coffee

express  = require('express')
routes   = require('./config/routes')
app      = express.createServer();

require('./config/environment')(app)
require('./config/routes')(app)

app.listen(3000);

config/environment.coffee

module.exports = (app) ->
  app.configure = () ->
    # set view path, template engine and defsult layout
    app.set 'view', __dirname + '/views'
    app.set 'view engine', 'jade'
    app.use(app.router)

config/routes.coffee

site = require('../controllers/site.js')
module.exports = (app) ->
  app.get '/', site.index

controllers/site.coffee

exports.index = (req, res) ->
  res.render 'main.jade', {title: 'New Article'}

问题出在 site.coffee 文件中,因为当我不编写扩展名时,例如“jade”ExpressJS 引擎尝试打开具有“未定义”扩展名的文件。如何从环境文件中记住视图引擎?

【问题讨论】:

    标签: node.js coffeescript express


    【解决方案1】:

    你不应该需要这条线

    app.set 'view engine', 'jade'
    

    正如Express docs 所说,它所做的只是允许您省略.jade 扩展名,例如

    res.render 'main', {title: 'New Article'}
    

    我相信你的问题是这条线

    app.set 'view', __dirname + '/views'
    

    您从config/environment.coffee 运行。 __dirname 是特定于文件的,因此您已将视图目录设置为 config/views — 可能不是您想要的。试着省略那一行;默认是path.join process.cwd(), 'views',我猜这就是你真正想要的。

    此外,尽管您对设置“默认布局”有意见,但我没有看到。所以如果你仍然有问题,你可能想试试

    res.render 'main.jade', {layout: false}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多