Я нашел несколько фрагментов из учебников express.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 в приведенном выше коде.
Может кто-нибудь дать мне какой-нибудь намек? Спасибо!
Спасибо, так значит ли это, если несколько пользователей представляют имена, все пользователи могут видеть весь список? –
@wilsonLiu - да, это следствие использования переменной верхнего уровня, как вы используете, - эта переменная используется всеми запросами от всех пользователей. Если вы хотите хранить вещи от имени одного пользователя, тогда требуется больше работы, чтобы идентифицировать пользователя и хранить материал, особенно для них. Существуют модули сеанса, которые помогут вам в этом. – jfriend00