这两者之间有什么区别?只有(1)起作用,(2)滞留在浏览器中;
((1)app.get('/source*', createProxyMiddleware({ target: serviceProvider}))
((2)app.get('/source*', () => {
createProxyMiddleware({ target: serviceProvider})
})
在选项(2)中,您将createProxyMiddleware({ target: serviceProvider})
放在了既不处理请求也不返回方法的函数中。
() => {}
是写作的缩写:
function(){}
因此,本质上,选项(2)中的代码与:相同
app.get('/source*', function () {
createProxyMiddleware({ target: serviceProvider})
});
基本上,您自己的功能接管了渲染器。
我还没有尝试过,但是请考虑尝试从您的函数中返回createProxyMiddleware({ target: serviceProvider})
。
示例:
app.get('/source*', () => {
// do here whatever you planned on doing inside your function before returning the renderer
return createProxyMiddleware({ target: serviceProvider});
});
createProxyMiddleware({ target: serviceProvider})
这将返回一个函数,该函数尚未使用来自快速中间件的参数执行。为了使第二个示例正常工作,您只需要执行返回的函数,如下所示
2) app.get('/source*', (req, res, next) => {
const func = createProxyMiddleware({ target: serviceProvider});
func(req, res, next);
})
我会说范围,尝试:
app.get('/source*', (req,res,next) => {
try {
createProxyMiddleware({ target: serviceProvider})
}
catch(error) {
next(error)
}
})
get的第二个参数需要匹配参数签名(请求,响应,下一个),该签名是express中任何中间件(包括端点控制器)的签名。 https://expressjs.com/en/guide/using-middleware.html
1创建正确的标准中间件功能。
2不返回任何内容,也不在响应中返回任何内容,也不调用“ next()”移至下一个请求中间件。
希望有帮助。我正在用电话接听。
让我们先假设createProxyMiddelware
函数返回值“ hello”。然后,我们可以像这样重新编写您的两个场景:
1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")
所以您现在可以看到区别。在第一种情况下,您正在评估createProxyMiddleware
功能。在第二种情况下,第二个参数是回调函数,该函数在被调用时将调用createProxyMiddelware
函数