express.js在哪里存储变量值?

时间:2014-10-21 02:37:47

标签: node.js

我发现了一些来自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。

有人可以给我一些提示吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您将它们推入names,这是在父作用域中声明的变量,因此可由所有请求访问。因此,它不是每个会话或每个请求,而是服务器进程的每个生命周期。