在Express Handlebars中设置目录管理

时间:2017-11-22 14:04:50

标签: javascript node.js express handlebars.js

我使用 NodeJs Express Handlebars

我的服务器文件app.js

const express = require('express');
const exphbs  = require('express-handlebars');

const app = express();

app.engine('handlebars', exphbs({defaultLayout: 'index'}));
app.set('view engine', 'handlebars');

app.get('/start', function (req, res) {
  res.render('start'); // render the "start" template
});

app.listen(8888, function () {
  console.log('Server running on port 8888');
});

因此,当传递路线localhost:8888/start时,应该有我的index.handlebars

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Foo</title>
</head>

<link href="../../CSS/requirements.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

<body>

  <p>TEST - This is on all pages</p>

{{{body}}}

</body>
</html>

和要加载的模板(start.handlebars

<script src="../Client/start.js"></script>

<p>Template 1 is active</p>

我的目录结构

Directory

运行服务器时,我的路由正常加载,但问题是,浏览器无法找到脚本和css文件。

Browser

我检查了我的路径,但我认为它们可能是正确的。我错了吗?

1 个答案:

答案 0 :(得分:1)

您必须在static应用中设置express文件夹。添加以下中间件

app.use(express.static(path.join(__dirname, 'public')));

之后

app.set('view engine', 'handlebars');

在根级别创建公用文件夹,并将ClientCSS文件夹移动到该public文件夹中。

参考:Link