如何使用NodeJS
更改每个页面的标题?
公用文件夹中的index.html
(不是.js
文件)是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Default Titlte for all pages</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
导航到任何页面时如何动态更改标题?
答案 0 :(得分:1)
默认情况下,document.title = 'title';
就像在JavaScript中更改页面标题一样,但这取决于您的环境。
NodeJS本身缺乏解析和转换HTML的能力。
在表达上,这就像(基于路线的方法):
router.get('/', function(req, res, next) {
res.render('index', { title: 'title' });
});
答案 1 :(得分:0)
app.get('/simple',(req, res) => {
res.render('simple.hbs',{title='mytitle'});
}
/simple
是路线,它将使您的“ 简单”({{1},HTML
,EJS
等等-取决于您使用的页面),并为其添加全新的标题。
在此示例中,它将为 mytitle :)
更新:使用严格HTML的示例
Handlebars
答案 2 :(得分:0)
我正在使用EJS template Engine
,所以我使用EJS
使用以下方法进行操作
在路线上执行
router.get("/add", function (req, res, next) {
res.render('category/add', { layout: "layoutMain", title: "Add New Category" });
});
此处layoutMain
是包含网站的css,js链接,侧边栏和标头部分的布局文件,该部分与网站的所有页面共享,因此我们将使其变得通用 < / p>
有关更多信息,请在官方文档中找到EJS LAYOUT
文档。
现在在layoutMain
文件中进行
<title><%- title%></title>
答案 3 :(得分:0)
注意:当它位于公用文件夹中时,您将无法执行此操作,因为公用文件夹的目的是显示静态页面,图像,样式,客户端脚本等。如果您仍要更改标题而不必想要将文件移出公用文件夹,请跳到最后一段。
为此,您需要使用任何模板引擎,例如EJS
,首先将.html
文件重命名为.ejs
,然后假设您正在使用Express.JS,则可以将数据传递到设计页面(注意:这是在服务器端发生的。)
在您的index.js
app.get("/path/to/your/page",function(req,res){
res.render("path/to/your/layout/index.ejs",{
title:"Your Title Here"
});
});
在您的index.ejs
中(不是完整的代码,请添加其余的html)
<head>
<title><%- title %></title>
</head>
您可以在Using EJS with Express上了解有关如何使用模板引擎的更多信息。 注意:该代码是一个简单示例,YouTube,文档,stackoverflow上广泛提供了使用Express和EJS的完整代码。
为什么要使用Node.JS更改标题?您可以随时使用客户端JS更改标题,例如:当用户单击登录按钮并打开登录弹出窗口时,您可以使用document.title="Login";
;当用户单击注册按钮并打开注册弹出窗口时,可以设置标题{ {1}},两者都在同一页面上。
答案 4 :(得分:-1)
res.write(<head>
<title>My title</title>
</head>
);
相应地在不同页面的(app.get)端点尝试上面的代码