Co będzie w tym przypadku middlewarem?

Co będzie w tym przypadku middlewarem?
S5
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
0
Kopiuj
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?

edytowany 1x, ostatnio: sajek587
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:9 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10064
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.

edytowany 3x, ostatnio: Riddle
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:14 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
S5
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
0

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

Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 2 godziny
  • Postów:847
0

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

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

Przekazanie jakieś funkcji przez argument.

edytowany 1x, ostatnio: Riddle
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:9 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10064
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ę?

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
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ę.

LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8414
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.


edytowany 6x, ostatnio: LukeJL
S5
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
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.

S5
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
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.

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:9 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10064
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.

LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8414
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


edytowany 2x, ostatnio: LukeJL
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 3 godziny
  • Postów:973
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


Zdalna praca dla Senior Python Developerów --> PW
TheSinOfGreed
  • Rejestracja:około 4 lata
  • Ostatnio:6 miesięcy
  • Postów:12
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:

Kopiuj
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.

LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8414
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


edytowany 1x, ostatnio: LukeJL
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)