在NodeJS中更改页面标题

时间:2019-05-19 23:22:39

标签: html node.js express

如何使用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>

导航到任何页面时如何动态更改标题?

5 个答案:

答案 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},HTMLEJS等等-取决于您使用的页面),并为其添加全新的标题。
在此示例中,它将为 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)端点尝试上面的代码