Node js中是否有应用程序范围变量

时间:2018-03-24 06:40:20

标签: node.js

我想知道是否有任何应用程序范围变量可以在整个应用程序中的任何位置访问。

由于我想使用javascript将数据添加到我的HTML标签,我需要将数据从server.js传输/获取到index.html

2 个答案:

答案 0 :(得分:1)

要将数据从server.js传输到index.html,您不需要创建全局变量。您需要使用模板引擎:pugejs或任何其他引擎。

只需将数据与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

进场把手

Server.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

进行操作

客户端HTML(index.hbs)

要使用把手,必须设置所有文件必须具有.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>

正如您所见,现在数据已从服务器发送到客户端以进行呈现