我想使用node.js构建一个简单的应用程序,其功能类似于IIS /经典ASP,其中所有内容(html,png,js,css,ejs)都可以在一个目录中,而ejs文件使用javascript vs .VBScript。
我从API和其他示例中收集了以下内容,但是ejs文件作为二进制文件到达浏览器并保存....
我的node.js文件:
var express = require('express');
var app = express();
app.use(app.router);
app.use(express.static(__dirname + '/html'));
app.engine('.ejs', require('ejs').__express);
app.set('views', __dirname + '/html');
app.set('view engine', 'ejs');
app.get('*.ejs', function(req, res) {
res.render(__dirname + '/html' + req.url, function(err, result) {
res.end(result);
});
});
app.listen(8080);
我的test.ejs文件:
<!DOCTYPE html>
<html>
<head><title>A test</title></head>
<body>
My Test Page
<% if (1==1) { %>
Working
<%}%>
</body>
</html>
我缺少什么或在哪里可以找到一个有效的例子?
我想出了......上面添加的解决方案
答案 0 :(得分:3)
express.js不会神奇地尝试渲染静态文件,你必须在某处明确地调用render
。
我相信这样的事情会起作用:
var express = require('express')
var app = express()
app.engine('.ejs', require('ejs').__express)
app.set('views', __dirname + '/html')
app.set('view engine', 'ejs')
app.use(app.router) // only in express 3, remove that in express 4
app.get('/test.html', function(req, res, next) {
res.render('test.ejs')
})
app.use(express.static(__dirname + '/html'))
app.listen(8080)
答案 1 :(得分:0)
我认为没有必要在每个地方运行渲染,我使用此示例通过将express 2.3.7迁移到4来渲染我的静态内容并且可以正常工作:
app.engine('.ejs', require('ejs').__express);
app.set('views', __dirname + '/public')
app.set('view engine', 'ejs')
app.use(express.static(__dirname + '/public'))
我的静态内容位于“公共”目录中。
答案 2 :(得分:0)
我只想补充一点,这些天快递已经支持EJS: