我发现了一些来自express.js教程的片段如下。
server.js
var express = require('express'),
bodyParser = require('body-parser'),
app = express();
app.use(bodyParser.urlencoded());
var names = [];
app.get('/', function(req, res){
res.render('index.jade', { names : names });
});
app.post('/', function(req, res){
names.push(req.body.name);
res.redirect('/');
});
app.listen('3000',function(){
console.log('start to listen port:3000');
})
index.jade
h1 Names
ul
for name in names
li=name
hr
h1 Add Name
form(method='POST')
input(name='name')
button Submit
当我提交一些名字时,名字变量会一直显示在页面上!
即使我启动一个新的浏览器并检查根页面,名称变量仍然存在!!!!
它是如何运作的?
据我所知,HTTP是无状态的。我不认为PHP可以做这样的事情,因为它已被重定向,如何根页面知道名称变量而不保存到会话或cookie?
我不认为上面代码中的names变量是session或cookie。
有人可以给我一些提示吗?谢谢!
答案 0 :(得分:2)
您将它们推入names
,这是在父作用域中声明的变量,因此可由所有请求访问。因此,它不是每个会话或每个请求,而是服务器进程的每个生命周期。