Co będzie w tym przypadku middlewarem?

0
const someArray = [0, 1, 2, 3, 4];

const callbackFn = (element) => element + 1;

const middleware = (element) => {
  const value = callbackFn(element);
  
  console.log(`Początkowa wartość ${element}, zwiększona o 1: ${value}`);
  
  return value;
}

console.log(someArray.map(middleware));

Co będzie w tym przypadku middlewarem w javascript? Czy cała funkcja o nazwie middleware czy middlewarem będzie tylko console.log, który jest w środku funkcji o nazwie middleware?

2
sajek587 napisał(a):

Co będzie w tym przypadku middlewarem w javascript?

A pytasz konkretnie o co? Ogólnie w kontekście języka to nie ma takiej rzeczy która nazywałaby się "middleware".

Moim skromnym zdaniem, to niektórzy używają określenie "middleware" na tą część swojego kodu która robi nie wiadomo co, nie ma dobrych nazw, jest gdzieś "w środku" (a wiadomo, there are only two hard things in programming), więc nazwiemy go "middleware". Co jest oczywiście szalone.

1

Oprogramowanie pośredniczące (ang. middleware) – rodzaj oprogramowania umożliwiający komunikację pomiędzy różnymi aplikacjami/usługami lub systemami[1].

Nie widzę tu middleware'u tak jak nie widze różnych aplikacji

0

Chodziło mi o middleware w js, czyli coś kod, który się wykonuje pomiędzy jedną częścią kodu, a drugą.

0

Jeśli chodzi Ci o "callback", nie middleware to jest nim ostatnia linijka w Twoim kodzie

sajek587 napisał(a):
console.log(someArray.map(middleware));

Przekazanie jakieś funkcji przez argument.

1
sajek587 napisał(a):

Chodziło mi o middleware w js, czyli coś kod, który się wykonuje pomiędzy jedną częścią kodu, a drugą.

Nie ma czegoś takiego.

Skąd wziąłeś tą nazwę?

1

Może chodzi o middleware znany z frameworków webowych typu Express.js (https://expressjs.com/en/guide/using-middleware.html) czy ASP.NET Core (https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-7.0)?

W każdym razie, ja w tym kodzie middleware w tym znaczeniu nie widzę.

0

callbackFn najbardziej przypomina mi middleware, bo robi jakieś transformacje danych, zanim trafią one do głównej funkcji mapującej. Ale równie dobrze można by argumentować, że funkcja nazwana middleware to middleware, a callbackFn jest tą główną. Kwestia interpretacji.

Anyway. Wydaje mi się, że podchodzisz od d… strony wrzucając kawałek kodu i pytając o takie rzeczy. Może doprecyzuj pytanie, po co ci ta wiedza o middleware.

Bo ogolnie jest to pewien wzorzec, który można stosowac, żeby zrobić jakieś pośrednie transformacje danych(albo poddać wstępnej obróbce wejście, albo poddać końcowej obróbce wyjście), tylko że w tym kawałku kodu w zasadzie nie ma sensu stosowania tego slowa. Funkcja, która nazwałeś middleware to zwykły wrapper/opakowanie na inną funkcje i tyle.

0
some_ONE napisał(a):

Może chodzi o middleware znany z frameworków webowych typu Express.js (https://expressjs.com/en/guide/using-middleware.html) czy ASP.NET Core (https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-7.0)?

W każdym razie, ja w tym kodzie middleware w tym znaczeniu nie widzę.

Tak o to mi chodzi. Tylko, że w czystym jsie.

0
LukeJL napisał(a):

callbackFn najbardziej przypomina mi middleware, bo robi jakieś transformacje danych, zanim trafią one do głównej funkcji mapującej. Ale równie dobrze można by argumentować, że funkcja nazwana middleware to middleware, a callbackFn jest tą główną. Kwestia interpretacji.

Anyway. Wydaje mi się, że podchodzisz od d… strony wrzucając kawałek kodu i pytając o takie rzeczy. Może doprecyzuj pytanie, po co ci ta wiedza o middleware.

Bo ogolnie jest to pewien wzorzec, który można stosowac, żeby zrobić jakieś pośrednie transformacje danych(albo poddać wstępnej obróbce wejście, albo poddać końcowej obróbce wyjście), tylko że w tym kawałku kodu w zasadzie nie ma sensu stosowania tego slowa. Funkcja, która nazwałeś middleware to zwykły wrapper/opakowanie na inną funkcje i tyle.

Chciałem lepiej poznać co to jest middleware po to aby lepiej ogarniać Redux thunka, który jest middlewarem.

1
sajek587 napisał(a):
some_ONE napisał(a):

Może chodzi o middleware znany z frameworków webowych typu Express.js (https://expressjs.com/en/guide/using-middleware.html) czy ASP.NET Core (https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-7.0)?

W każdym razie, ja w tym kodzie middleware w tym znaczeniu nie widzę.

Tak o to mi chodzi. Tylko, że w czystym jsie.

sajek587 napisał(a):
LukeJL napisał(a):

callbackFn najbardziej przypomina mi middleware, bo robi jakieś transformacje danych, zanim trafią one do głównej funkcji mapującej. Ale równie dobrze można by argumentować, że funkcja nazwana middleware to middleware, a callbackFn jest tą główną. Kwestia interpretacji.

Anyway. Wydaje mi się, że podchodzisz od d… strony wrzucając kawałek kodu i pytając o takie rzeczy. Może doprecyzuj pytanie, po co ci ta wiedza o middleware.

Bo ogolnie jest to pewien wzorzec, który można stosowac, żeby zrobić jakieś pośrednie transformacje danych(albo poddać wstępnej obróbce wejście, albo poddać końcowej obróbce wyjście), tylko że w tym kawałku kodu w zasadzie nie ma sensu stosowania tego slowa. Funkcja, która nazwałeś middleware to zwykły wrapper/opakowanie na inną funkcje i tyle.

Chciałem lepiej poznać co to jest middleware po to aby lepiej ogarniać Redux thunka, który jest middlewarem.

Ale skąd w ogóle wziąłeś pomysł że istnieje coś takiego jak middleware w JS?

Taki "twór" jak middleware w "gołych" językach programowania nie istnieje.

3

Tak to jest, jak się człowiek uczy frameworków, zanim się nauczy porządnie programować xD

Z drugiej strony wiekszosc pewnie się uczy o tym, czym jest middleware na przykładzie backendowych frameworkow. Tam ten wzorzec jest używany w bardziej klarowny sposób niż w Redux.

Wiec jeśli chcesz zrozumieć middleware, to łatwiej będzie ci się nauczyć backendowego frameworku, gdzie jest używany ten wzorzec, a dopiero potem Reduxa

0

Middleware to po prostu nazwa na pewne (?) wzorce. Jest to po prostu "wbicie" się (najczęściej) pomiędzy request użytkownika a widok.
Jeśli chcielibyśmy wykonywać coś pomiędzy requestem a wiodkiem to możemy to zrobić właśnie za pomocą middleware, który byłby wykonany przy każdym request. Jak byłoby to zaimplementowane to już osobna kwestia bo można zrobić to na kilka sposobów

1

Trochę chyba pomyliłeś pojęcia. Przede wszystkim pojęcia 'middleware' nie używa się w czystym JavaScripcie, a przynajmniej ja o tym nie słyszałem.
Middleware jest często używane w aplikacjach sieciowych opartych na serwerze, takich jak aplikacje oparte na Express.js w Node.js. Służy do wykonywania różnych zadań, takich jak autentykacja, logowanie, przetwarzanie żądań i modyfikowanie odpowiedzi, przed przekazaniem żądania lub odpowiedzi do następnego kroku w obrębie ścieżki żądania.

Przykład:

router.get('/', [moj_middleware], (req, res)=>{
   console.log('jestes zalogowany')
});

function moj_middleware(req, res, next){
  if(zalogowany){
    next();
  }else{
    res.send({status: "niezalogowany"})
  }
}

Mamy ścieżkę '/' zanim się jednak ona wykona, wykonywana jest nasz middleware o nazwie 'moj_middleware' który sprawdza czy użytkownik jest zalogowany (middleware ma dostęp do naszego requesta http).

Middleware jest również używane w aplikacjach opartych na Redux do zarządzania stanem aplikacji. W tych przypadkach middleware może być używane do przechwytywania i modyfikowania akcji przed ich przekazaniem do funkcji redux lub do wykonywania dodatkowych zadań po otrzymaniu akcji.

1
sajek587 napisał(a):

Chciałem lepiej poznać co to jest middleware po to aby lepiej ogarniać Redux thunka, który jest middlewarem.

Middlewarem do Reduxa. Zajrzyj do dokumentacji Reduxa:
https://redux.js.org/tutorials/fundamentals/part-4-store#middleware

1 użytkowników online, w tym zalogowanych: 0, gości: 1