我想知道是否有任何应用程序范围变量可以在整个应用程序中的任何位置访问。
由于我想使用javascript将数据添加到我的HTML标签,我需要将数据从server.js传输/获取到index.html
答案 0 :(得分:1)
要将数据从server.js传输到index.html,您不需要创建全局变量。您需要使用模板引擎:pug,ejs或任何其他引擎。
只需将数据与html文件一起传递到res.render()函数中,并使用模板语法在页面上显示数据。
路由器代码:
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!'});
});
Pug代码:
html
head
title= title //Hey
body
h1= message //Hello there!
ejs代码:
<html>
<head> <%= title %> </head>
<body>
<h1> <%= message %> </h1>
</body>
</html>
答案 1 :(得分:-2)
在node.js中没有应用程序变量,因为变量的最高范围是全局范围。在您的示例中,您可能希望将数据从服务器文件(server.js)发送到客户端HTML(index.html)。一种方法是使用模板引擎来执行此操作,例如 Handlebars.js 或 mustache.js 。
const hbs = require('hbs') // the handlebars system libary added with 'npm
install hbs'
const express = require('express'); // express used for server setup
hbs.registerPartials(__dirname + '/views') //replace '/views' with path to view folder from app root
// setting up express app
app=express()
app.set('view engine', 'hbs') // view engine set to hbs, to allow you to use hbs templating
app.get('/', (req, res) => {
res.render('index.hbs', {
title: 'Home Page'
}) // ibject contains properties you want to send to client side file
});
app.listen(3000); //sets server up on port 3000
如果您想了解有关快递框架的更多信息,请按照link
进行操作要使用把手,必须设置所有文件必须具有.hbs扩展名。要使用发送的数据,请使用语法{{property name}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Handle bars example</title>
</head>
<body>
<h1>{{title}}</h1> passing the property you sent from the server into the client
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Handle bars example</title>
</head>
<body>
<h1>Home Page</h1>
</body>
</html>
正如您所见,现在数据已从服务器发送到客户端以进行呈现