如何路由HTML节点js Express js

我试图路由多个HTML页面。 它加载index.html文件,但是当我想加载raw.html,它说

错误:无法在视图目录中查找视图“错误”

app.js

var routes = require('./routes/index'); var users = require('./routes/users'); var raw = require('./routes/raw'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); app.use('/raw', raw); 

/routes/index.js

 var express = require('express'); var router = express.Router(); var path = require('path'); router.get('/', function(req, res) { res.sendFile(path.join(__dirname + '/public/index.html')); }); module.exports = router; 

/routes/raw.js

 var express = require('express'); var router = express.Router(); var path = require('path'); router.get('/raw', function(req, res) { res.sendFile(path.join(__dirname + '/public/raw.html')); }); module.exports = router; 

您正在configuration快速使用帕格 (以前称为 )模板引擎。

模板引擎使您可以在应用程序中使用静态模板文件。 在运行时,模板引擎用实际值replace模板文件中的variables,并将模板转换为发送给客户端的HTML文件。 这种方法可以更容易地devise一个HTML页面。

您在上面提到的错误是因为您在views目录中没有名为error.pug的模板文件。 模板引擎捕获到第一个错误,即:

错误:ENOENT:没有这样的文件或目录,

然后尝试呈现错误模板。

 res.sendFile(path.join(__dirname + '/public/index.html')); 

上面的文件routes/index.js行将尝试发送routes/public/index.html并且该文件不存在。

您可以在请求处理程序中使用正确的path修复您的快速configuration,即:

 router.get('/', function(req, res) { res.sendFile(path.join(__dirname + '/../public/index.html')); }); 

你也应该删除模板引擎configuration,因为你似乎没有使用它。

您在评论中提到您要使用Angular,所以…如果您想使用Angular,则不需要视图引擎。

当使用Angular时,网站的“主要”部分位于客户端的index.html文件中(这不是100%正确的,只是一个例子)。 那部分(在用户浏览器中)有JS代码(Angular),它向服务器发送http请求 – $ http 。

服务器部分基本上只是操作这些请求,并将数据发回给客户端的Angular,然后在客户端做你想要的数据。 您可以使用Node,PHP等来响应这些请求。这与AJAX背后的想法类似,只是在页面的小部分内容被更改的情况下,无需重新加载整个页面。

另一方面,如果您正在使用视图引擎,那么当服务器收到请求时,例如:

 app.get('/',.routes.views.home); 

服务器呈现整个html页面并将其发送到客户端,因为它与PHP一起工作。