传递函数与 express 中的 () => {} 的区别
Difference between passing function and the () => {} in express
这两者有什么区别?只有 (1) 有效,(2) 卡在浏览器中;
(1) app.get('/source*', createProxyMiddleware({ target: serviceProvider}))
(2) app.get('/source*', () => {
createProxyMiddleware({ target: serviceProvider})
})
在选项 (2) 中,您将 createProxyMiddleware({ target: serviceProvider})
放置在一个不处理请求的函数内,也不 return 一个处理请求的方法。
() => {}
是 shorthand 写作:
函数(){}
所以本质上,选项 (2) 中的代码与:
app.get('/source*', function () {
createProxyMiddleware({ target: serviceProvider})
});
基本上你自己的函数接管了渲染器。
我还没有尝试过,但可以考虑从您的函数中尝试 return createProxyMiddleware({ target: serviceProvider})
。
示例:
app.get('/source*', () => {
// do here whatever you planned on doing inside your function before returning the renderer
return createProxyMiddleware({ target: serviceProvider});
});
尝试:
app.get('/source*', (req,res,next) => {
try {
createProxyMiddleware({ target: serviceProvider})
}
catch(error) {
next(error)
}
})
createProxyMiddleware({ target: serviceProvider})
此 returns 一个尚未使用来自 express 中间件的参数执行的函数。
要使第二个示例起作用,您只需按以下方式执行返回的函数
2) app.get('/source*', (req, res, next) => {
const func = createProxyMiddleware({ target: serviceProvider});
func(req, res, next);
})
get 的第二个参数需要匹配参数签名(请求、响应、下一个),这是 express 中任何中间件的签名,包括端点控制器。 https://expressjs.com/en/guide/using-middleware.html
1 创建一个正确的标准中间件函数。
2 没有 return 任何东西,没有 return 任何响应,也没有调用 "next()" 进入下一个请求中间件。
希望对您有所帮助。我正在从我的 phone 回答。
让我们暂时假设 createProxyMiddelware
函数 returns 值 "hello"。然后我们可以像这样重写你的两个场景:
1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")
所以你现在可以看出区别了。在第一个场景中,您正在计算 createProxyMiddleware
函数。在第二种情况下,第二个参数是回调函数,调用时将调用 createProxyMiddelware
函数
这两者有什么区别?只有 (1) 有效,(2) 卡在浏览器中;
(1) app.get('/source*', createProxyMiddleware({ target: serviceProvider}))
(2) app.get('/source*', () => {
createProxyMiddleware({ target: serviceProvider})
})
在选项 (2) 中,您将 createProxyMiddleware({ target: serviceProvider})
放置在一个不处理请求的函数内,也不 return 一个处理请求的方法。
() => {}
是 shorthand 写作:
函数(){}
所以本质上,选项 (2) 中的代码与:
app.get('/source*', function () {
createProxyMiddleware({ target: serviceProvider})
});
基本上你自己的函数接管了渲染器。
我还没有尝试过,但可以考虑从您的函数中尝试 return createProxyMiddleware({ target: serviceProvider})
。
示例:
app.get('/source*', () => {
// do here whatever you planned on doing inside your function before returning the renderer
return createProxyMiddleware({ target: serviceProvider});
});
尝试:
app.get('/source*', (req,res,next) => {
try {
createProxyMiddleware({ target: serviceProvider})
}
catch(error) {
next(error)
}
})
createProxyMiddleware({ target: serviceProvider})
此 returns 一个尚未使用来自 express 中间件的参数执行的函数。 要使第二个示例起作用,您只需按以下方式执行返回的函数
2) app.get('/source*', (req, res, next) => {
const func = createProxyMiddleware({ target: serviceProvider});
func(req, res, next);
})
get 的第二个参数需要匹配参数签名(请求、响应、下一个),这是 express 中任何中间件的签名,包括端点控制器。 https://expressjs.com/en/guide/using-middleware.html
1 创建一个正确的标准中间件函数。
2 没有 return 任何东西,没有 return 任何响应,也没有调用 "next()" 进入下一个请求中间件。
希望对您有所帮助。我正在从我的 phone 回答。
让我们暂时假设 createProxyMiddelware
函数 returns 值 "hello"。然后我们可以像这样重写你的两个场景:
1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")
所以你现在可以看出区别了。在第一个场景中,您正在计算 createProxyMiddleware
函数。在第二种情况下,第二个参数是回调函数,调用时将调用 createProxyMiddelware
函数