javascript - 关于node.js的一点问题

查看:120
本文介绍了javascript - 关于node.js的一点问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

各位大神,晚上好!事情是这个样子的,我今天下载了一本《Node.js实战》的电子书,看到其中有关于处理提交的表单的内容,于是就试着跟着做了起来(没想到刚开始就卡壳了),先把代码放上来:

var http = require("http");
var arr = [];
function show(res){
var html ='<html><head><title>Document</title></head><body>'
          +'<h1>Test</h1>'
          +arr.map(function(item){
            return '<li>'+item+'</li>'
          }).join(" ")
          +'<form method="post" action="/">'
          +'<input type="text" name="name">'
          +'<input type="submit" value="submit">'
          +'</form> </body></html>';
            res.end(html);
        }

  
var server = http.createServer(function(req, res) {
    if (req.method == 'POST') {
        req.on('data', function(chunk) {
            arr.push(chunk.toString());
            show(res);
        })
    } else { show(res); }
}).listen(3000);

其大致过程是这样的:
每次提交到本页面的内容都会累加到一个数组中,然后再把每次提交的内容返回到当前页面中,下面的图演示了大致过程。

我的疑问是:
每次提交后相当于刷新了本页面,那么按道理讲原本存储在数组中的数据应该在每次提交后被清空啊,举个例子,比如第一次填写的是Jack,程序将Jack放到了数组中,当我第二次填写lee并提交的时候,相当于重新载入了页面,之前保存在数组中的jack应该不会存在了,但是为什么却依然如上图所示,竟然还保存着呢?

举个类似情况的php的例子(看懂我上面所表达意思的大神可以不看下面的内容

<?php
$post=[];
if($_POST){
    array_push($post,$_POST["name"]);
    print_r($post);

}
echo <<<EOT
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <form action="/" method="post">
        <input type="text" name="name">
        <input type="submit" value="submit">
    </form>
</body>
</html>
EOT;
?>

php的过程也是将post过来的数据存入数组,但是在每次提交后,php并没有保存上一次的数据,嗯,PHP是正常的,<( ̄︶ ̄)>

解决方案

你的arr是全局的,就是说你的arr是和你的Node服务共存亡的,只要你的Node服务没有挂掉,arr从服务启动之初就会一直存在。换句话说,只要另一个人访问你的页面,并且提交数据,你这边刷新也是能够看见的。

这篇关于javascript - 关于node.js的一点问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆