ExpressJS:将.js文件中的变量调用到index.html

时间:2018-02-02 16:28:48

标签: javascript html express variables get

我正在使用express@4.16.2

我想调用从main.jsindex.html

的变量

main.js:

const express = require('express')
const app = express()
var router = express.Router()
app.use('/',express.static('public'));

app.get('/main', function(req, res) {
    res.send("index", {name:'hello'});
});

app.listen(3000, () => console.log('listening on 3000'));

的index.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title></title>
  <link rel="icon" href="images/favicon.png">
</head>

<body>
  <<h1>{{ name }}</h1>
</body>
</html>

这是在网页上提供以下结果:

{{ name }}

我需要进行http get方法调用吗?我之间缺少什么?任何帮助/提示/指导都将受到高度赞赏!

由于

2 个答案:

答案 0 :(得分:2)

您必须use a template engine允许您使用实际值替换视图文件中的变量,并将模板转换为发送给客户端的HTML文件。

有许多视图引擎与express结合使用,您可以在此处选择其中一个:https://expressjs.com/en/guide/using-template-engines.html

我建议您使用ejs,因为它很容易理解,以下是使用它的示例:

<强> main.js

const express = require('express')
const app = express()
var router = express.Router()
app.use('/',express.static('public'));

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.get('/main', function(req, res) {
    res.send("index", {name:'hello'});
});

app.listen(3000, () => console.log('listening on 3000'));

<强>的index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="icon" href="images/favicon.png">
</head>

<body>
<!-- show name -->
<<h1><%= name %></h1>
</body>
</html>

答案 1 :(得分:0)

您使用的是hbs语法:

<<h1>{{ name }}</h1>

没有加载hbs视图引擎来渲染它。

hbs的例子:

const express = require('express');
const hbs = require('hbs');

const app = express();

app.set('view engine', 'hbs');

app.get("/main", (req, res) => {
    res.render("index.hbs", {
        name: "hello"
    });
});

app.listen(<port>);