我正在尝试将一个变量从node.js传递到我的HTML文件。
app.get('/main', function(req, res) {
var name = 'hello';
res.render(__dirname + "/views/layouts/main.html", {name:name});
});
我正在尝试将一个变量从node.js传递到我的HTML文件。
app.get('/main', function(req, res) {
var name = 'hello';
res.render(__dirname + "/views/layouts/main.html", {name:name});
});
我解决了这个问题,可以像这样传递一个变量:
<script>var name = "<%= name %>";</script>
console.log(name);
我找到了可能的编写方式。
服务器端 -
app.engine('html', require('ejs').renderFile);
app.get('/main', function(req, res) {
var name = 'hello';
res.render(__dirname + "/views/layouts/main.html", {name:name});
});
客户端(main.html) -
<h1><%= name %></h1>
你可以使用一些模板引擎,比如pug(以前叫做jade)。要启用它,你需要执行以下步骤:
npm install --save pug
- 将其添加到项目和package.json文件中app.set('view engine', 'pug');
- 在express中将其注册为视图引擎./views
文件夹并添加一个简单的 .pug
文件,如下所示:html
head
title= title
body
h1= message
请注意,间距非常重要!
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!'});
});
这将使用node.js中传递的变量值渲染一个index.html页面。此内容来自expressjs模板引擎页面:http://expressjs.com/en/guide/using-template-engines.html
有关Pug的更多信息,您也可以查看:https://github.com/pugjs/pug
something.X
。 - Vasil Dininski使用res.render()方法将变量从Node.js传递到HTML。
例子:
var bodyParser = require('body-parser');
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/'));
app.use(bodyParser.urlencoded({extend:true}));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', __dirname);
app.get('/', function(req, res){
res.render('index.html',{email:data.email,password:data.password});
});
<title> <?php echo $custom_title; ?>
而不需要安装其他东西。function (idToken) {
$.ajax({
url: '/main',
headers: {
Authorization: 'Bearer ' + idToken
},
processData: false,
}).done(function (data) {
localStorage.setItem('name', data.name);
//or whatever you want done.
}).fail(function (jqXHR, textStatus) {
var msg = 'Unable to fetch protected resource';
msg += '<br>' + jqXHR.status + ' ' + jqXHR.responseText;
if (jqXHR.status === 401) {
msg += '<br>Your token may be expired'
}
displayError(msg);
});
使用express()的server.js
app.get('/main',
passport.authenticate('oauth2-jwt-bearer', { session: false }),
function (req, res) {
getUserInfo(req) //get your information to use it.
.then(function (userinfo) { //return your promise
res.json({ "name": userinfo.Name});
//you can declare/return more vars in this res.json.
//res.cookie('name', name); //https trouble
})
.error(function (e) {console.log("Error handler " + e)})
.catch(function (e) {console.log("Catch handler " + e)});
});
http API node
发送请求来实现此功能,该请求从节点对象中返回所需的对象以供客户端的HTML
页面使用。API: localhost:3000/username
将从节点应用程序对象中缓存的已登录用户返回。app.get('/username', function(req, res) {
res.json({ udata: req.session.user });
});
app.post('/app/login',(req, res) { // (POST, '/app/login')
const user = req.body.user;
sessions.push({ sessionId, user});
res.cookie('user', user);
res.sendFile('inicio.html');
});
重要的是要注意,我向客户发送了一个HTML文件,随后,在与之链接的JavaScript文件中,我创建了这个函数:
document.addEventListener("DOMContentLoaded", ()=> {
const username = document.cookie.slice(5);
document.querySelector("#user_h3").innerHTML += username;
});
<h3 id="user_h3" >Welcome, user: </h3>
除了顶部的那些,您可以使用JavaScript从服务器获取详细信息。 HTML文件
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="test">
</div>
<script type="text/javascript">
let url="http://localhost:8001/test";
fetch(url).then(response => response.json())
.then( (result) => {
console.log('success:', result)
let div=document.getElementById('test');
div.innerHTML=`title: ${result.title}<br/>message: ${result.message}`;
})
.catch(error => console.log('error:', error));
</script>
</body>
</html>
server.js
app.get('/test',(req,res)=>{
//res.sendFile(__dirname +"/views/test.html",);
res.json({title:"api",message:"root"});
})
app.get('/render',(req,res)=>{
res.sendFile(__dirname +"/views/test.html");
})
在Stack Overflow上,我找到了关于这个问题的最佳答案,这不是我的答案。我在某个地方找到了一个几乎相同的问题的来源...答案来源
如果使用Express,完全不需要使用视图引擎,可以像这样使用:
<h1>{{ name }} </h1>