2013-07-25 48 views
2

我不知道这是否是一个真正的noob问题,但我已经看到了很多有关在node.js和Express中使用Express的文档。但我所看到的是,他们总是使用另一种称为“Jade”的语言来呈现HTML文件。为什么?我想知道它的必需品是否使用Jade,或者我可以使用HTML在Express中呈现模板。Express和node.js中的HTML?

+0

有一个看@这个http://stackoverflow.com/questions/4529586/render-basic-html-view-in-node-js-express。 Jade是一个模板引擎 – dcodesmith

回答

4

不,不需要在Express中使用Jade。这只是一个受欢迎的选项,因为Jadedefault for generated applications,并由与Express相同的开发人员维护。

他们也倾向于保持彼此最新,例如template inheritance in jade作为express dropped support for layouts的添加。

但是,还有许多其他视图引擎提供了对Express的内置支持。而且,consolidate project可以调停/ glue所以你必须even more options

  • ATPL
  • 灰尘
  • 生态
  • ECT
  • EJS
  • HAML
  • HAML咖啡
  • 个车把
  • 霍根
  • 爵士乐
  • jqtpl
  • JUST
  • 小胡子
  • QEJS
  • 痛饮
  • templayed
  • 太妃糖
  • 下划线
  • 海象
  • 晶须

注:我相信我误解你的问题,回答得过于宽泛,在第一。但是,如果它仍然有用,留下我写下的其余部分。

没有必要在Express中使用视图引擎,但可能会有帮助。

Express可以简单地.send()一个值作为响应:

res.send(new Buffer('whoop')); 
res.send({ some: 'json' }); 
res.send('some html'); 

但是,像玉视图引擎可以与来自一个视图/模板生成更复杂的,数据驱动的内容帮助。他们还可以帮助保持项目按照意图进行组织(separation of concerns),因为视图通常保存在自己的文件中。

尽管如果你想使用res.render(),视图引擎是必要的。此方法取决于'view engine' application setting或您已配置app.engine()

app.set('view engine', 'jade'); // or ejs, swig, etc. 

# ... 

res.render('a-view'); // looks for `a-view.jade` based on `'view engine'` 
app.engine('jade', require('consolidate').jade); 

# ... 

res.render('a-view.jade'); // matches the extension to the `.engine()` 
0

如果你决定使用玉器,也有将你的数据,包括你的玉文件将原始的HTML元素的多种方式。您还可以插入HTML的片段,如果你手动旁路消毒剂与!{ locals.someHtmlString }

您可以检查出的下方玉代码演示(虽然没有传入locals变量)在这里:http://cssdeck.com/labs/qkkrzfes

​​