Biw*_*wek 73
你可以这样做:
安装ejs:
npm install ejs
Run Code Online (Sandbox Code Playgroud)将app.js中的模板引擎设置为ejs
// app.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Run Code Online (Sandbox Code Playgroud)现在在路径文件中,您可以分配模板变量
// ./routes/index.js
exports.index = function(req, res){
res.render('index', { title: 'ejs' });};
Run Code Online (Sandbox Code Playgroud)然后,您可以在/ views目录中创建html视图.
小智 61
Jade也接受html输入.
只需在行尾添加一个点即可开始提交纯HTML.
如果这样做对你有用,那么试试:
doctype html
html. // THAT DOT
<body>
<div>Hello, yes this is dog</div>
</body>
Run Code Online (Sandbox Code Playgroud)
PS - 无需关闭HTML - 这是由Jade自动完成的.
lac*_*ass 17
response.sendFileapp.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});)
Run Code Online (Sandbox Code Playgroud)
res.sendfile(path, [options], [fn]])在给定路径传输文件.
根据文件名的扩展名自动默认Content-Type响应头字段.
fn(err)传输完成或发生错误时调用回调.
res.sendFile通过http缓存头提供客户端缓存,但它不会在服务器端缓存文件内容.上面的代码将在每个请求上点击磁盘.
kev*_*oat 16
在我看来,使用像ejs一样大的东西只是为了阅读HTML文件有点笨拙.我刚刚为html文件编写了自己的模板引擎,非常简单.该文件如下所示:
var fs = require('fs');
module.exports = function(path, options, fn){
var cacheLocation = path + ':html';
if(typeof module.exports.cache[cacheLocation] === "string"){
return fn(null, module.exports.cache[cacheLocation]);
}
fs.readFile(path, 'utf8', function(err, data){
if(err) { return fn(err); }
return fn(null, module.exports.cache[cacheLocation] = data);
});
}
module.exports.cache = {};
Run Code Online (Sandbox Code Playgroud)
我打电话给我的htmlEngine,你使用它的方式只是说:
app.engine('html', require('./htmlEngine'));
app.set('view engine', 'html');
Run Code Online (Sandbox Code Playgroud)
jos*_*736 10
app.register()app.engine()由于Express 3 改变了模板引擎的处理方式,因此它刚刚被重命名.
Express 2.x模板引擎兼容性需要以下模块导出:
Run Code Online (Sandbox Code Playgroud)exports.compile = function(templateString, options) { return a Function; };Express 3.x模板引擎应导出以下内容:
Run Code Online (Sandbox Code Playgroud)exports.__express = function(filename, options, callback) { callback(err, string); };如果模板引擎没有公开此方法,那么您运气并不好,该
app.engine()方法允许您将任何函数映射到扩展.假设您有一个markdown库并且想要渲染.md文件,但是这个库不支持Express,您的app.engine()调用可能如下所示:Run Code Online (Sandbox Code Playgroud)var markdown = require('some-markdown-library'); var fs = require('fs'); app.engine('md', function(path, options, fn){ fs.readFile(path, 'utf8', function(err, str){ if (err) return fn(err); str = markdown.parse(str).toString(); fn(null, str); }); });
如果你正在寻找一个允许你使用"普通"HTML的模板引擎,我推荐使用doT,因为它非常快.
当然,请记住,Express 3视图模型会将视图缓存留给您(或您的模板引擎).在生产环境中,您可能希望将视图缓存在内存中,这样您就不会在每个请求上执行磁盘I/O.
小智 -10
如果你想在nodeJS中使用纯html,而不使用jade..或其他什么:
var html = '<div>'
+ 'hello'
+ '</div>';
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我对此做得很好。
优点是控制时简单。你可以使用一些技巧,比如'<p>' + (name || '') + '</p>',三元..等
如果你想在浏览器中使用缩进代码,你可以这样做:
+ 'ok \
my friend \
sldkfjlsdkjf';
Run Code Online (Sandbox Code Playgroud)
并随意使用\t或\n。但我更喜欢没有,而且速度更快。