有没有一种使用 EJS 模板避免重复使用 Express 服务器的路由的好方法?
Is there a nice way to route using EJS teamplate avoiding repetition with Express server?
假设我的应用有两个视图:index.ejs、profile/index.ejs
我想使用如下所示的快速代码进行路由。
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index');
});
/* GET profile page. */
router.get('/profile', function (req, res, next) {
res.render('profile/index');
});
两个ejs文件都应该有bootstrap link吗?
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
如果是,那么每当我想渲染另一个页面时,我是否应该从CDN重新加载样式和js文件?
我的意思是,当我更改我的 EJS 模板时,有什么好的方法可以保留通用内容吗?
没有。您可以通过将用于整个应用程序的脚本和 css 添加到不同的 EJS
文件中来轻松做到这一点。
例如
创建名为 header.ejs
的文件并在其中添加所有链接和脚本。
然后在您的模板中只包含此文件和这段代码
<head>
<% include header.ejs %>
//IN HERE you can add page specific scripts or links
</head>
希望对您有所帮助
有几种方法可以实现这一点。
1).使用部分并将它们包含在每个页面中。
2).如果您不喜欢在每个页面中包含部分内容,那么您可以使用 express-ejs-layouts or ejs-locals
对于第一种方法,我们可以有一个包含我们需要的所有部分的部分目录。
这是我们的偏音
//partials/head.ejs
<meta charset="UTF-8">
<title>EJS Template</title>
<link ref="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
此 scipt.js 可以包含您要包含的所有脚本。
//partials/script.js
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"> </script>
假设我们想在 index.ejs 中包含这些部分,那么我们需要做的就是简单地使用 <% include partial %>
就可以了。
// index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<% include partials/head %>
</head>
<body class="container">
<header>
<% include partials/header %>
</header>
<main>
<div class="jumbotron">
<h1>This is great</h1>
<p>Welcome to templating using EJS</p>
</div>
</main>
<footer>
<% include partials/footer %>
</footer>
<% include partials/script %>
</body>
</html>
希望对您有所帮助!!
假设我的应用有两个视图:index.ejs、profile/index.ejs 我想使用如下所示的快速代码进行路由。
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index');
});
/* GET profile page. */
router.get('/profile', function (req, res, next) {
res.render('profile/index');
});
两个ejs文件都应该有bootstrap link吗?
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
如果是,那么每当我想渲染另一个页面时,我是否应该从CDN重新加载样式和js文件?
我的意思是,当我更改我的 EJS 模板时,有什么好的方法可以保留通用内容吗?
没有。您可以通过将用于整个应用程序的脚本和 css 添加到不同的 EJS
文件中来轻松做到这一点。
例如
创建名为 header.ejs
的文件并在其中添加所有链接和脚本。
然后在您的模板中只包含此文件和这段代码
<head>
<% include header.ejs %>
//IN HERE you can add page specific scripts or links
</head>
希望对您有所帮助
有几种方法可以实现这一点。
1).使用部分并将它们包含在每个页面中。
2).如果您不喜欢在每个页面中包含部分内容,那么您可以使用 express-ejs-layouts or ejs-locals
对于第一种方法,我们可以有一个包含我们需要的所有部分的部分目录。
这是我们的偏音
//partials/head.ejs
<meta charset="UTF-8">
<title>EJS Template</title>
<link ref="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
此 scipt.js 可以包含您要包含的所有脚本。
//partials/script.js
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"> </script>
假设我们想在 index.ejs 中包含这些部分,那么我们需要做的就是简单地使用 <% include partial %>
就可以了。
// index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<% include partials/head %>
</head>
<body class="container">
<header>
<% include partials/header %>
</header>
<main>
<div class="jumbotron">
<h1>This is great</h1>
<p>Welcome to templating using EJS</p>
</div>
</main>
<footer>
<% include partials/footer %>
</footer>
<% include partials/script %>
</body>
</html>
希望对您有所帮助!!