gpt4 book ai didi

javascript - ByRef/ByVal 问题?

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:45 26 4
gpt4 key购买 nike

我正在观看一些关于 Nodejs 的介绍类型视频。我遇到了一个我想出来的问题,但我想了解“为什么”。这是有问题的原始代码:

    var http = require("http");
var express = require("express");
var bodyParser = require('body-parser');
var app = express();

var controllers = require("./controllers");

controllers.init(app);
app.use(express.static(__dirname + "/public"));

app.set("view engine", "vash");
app.use(bodyParser.urlencoded({ extended: false }));

每次我去使用请求中的主体对象时,它都会是未定义的。我的问题是 app.use(bodyParser.urlencoded({ Extended: false }));。那么我是怎么解决的呢?我将该行移到了 controllers.init(app); 之上。

所以我想再次了解这里的问题,以便将来可以预防它。这是某种类型的 byref/byval 问题吗?在将应用程序对象传递到 Controller 后,我对应用程序对象所做的所有其他更改似乎都有效。谁能解释一下这里发生了什么以及如何防止将来发生这种情况?

最佳答案

express 创建一个管道(基于 connect 中间件)。本质上,每个中间件都通过调用 next() 回调链接到下一个中​​间件,并且只需按照代码中传递给 app.use() 的顺序堆叠它们,就可以让事情变得简单。 Controller 处理程序(通常)是异常(exception),因为它们很少调用 next() ,而是在对输出流执行某些操作后通过调用 res.end() 来结束链(在您的代码中,您可能不会调用 end() ,但其他方法(如 render()send() 会在内部调用它)。

关于javascript - ByRef/ByVal 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com