我已经能够在node.js和php中编写应用程序一段时间了,但只是真的发现了一个奇怪的区别,我觉得我还是不完全理解。
我认为我注意到的差异是假设我们必须访问由php运行的Web应用程序的客户端,他们将在后端(变量数组等)上有两个完全不同的所有数据实例。在node.js中,它们并不完全。
这是我尝试的一项测试,可以省去一些困惑:
frontend js
$.post("/ajax.php", {test:"test"}, function(result){
console.log(result);
});
ajax.php
$testarr = array();
if(isset($_POST['test'])){
$testarr[] = $_POST['test'];
print_r($testarr);
}
...在此示例中,如果我在两个不同的浏览器中访问应用程序,或者甚至在同一客户端中访问该应用程序,前端控制台将始终输出一个包含单个元素的数组。因此阵列基本上重置了刷新/新请求。
frontend js
$.post("/test", {test:"test"}, function(result){
console.log(result);
});
app.js
var testarr = [];
app.post("/test", function(req, res){
testarr.push(req.body.test);
console.log(testarr);
});
然而,在这里,当我甚至从不同的浏览器刷新页面时,数组不会重置,我最终会在每个请求上使用[“test”,“test”,“test”等]。两个不同浏览器的两个不同客户端如何访问同一个数组?通常数据必须通过数据库,特殊请求等共享吗?
我显然误解了node.js的一些重要哲学,我很感激任何人都有一个很好的解释。
答案 0 :(得分:1)
区别在于PHP为每个请求创建了一个新环境,而node.js却没有。
答案 1 :(得分:-1)
我不是最大的PHP游戏,但我认为你会覆盖你的PHP数组而不是推送新元素。你可以使用array_push()向你的testarr添加一些内容。