• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript backend

Object Storage Arubacloud
+1 głos
6,950 wizyt
pytanie zadane 8 września 2016 w Offtop przez niezalogowany

Od kilku dni chodzi mi po głowie pytanie: Czemu używa się JS do backend'u?

 

Załóżmy, że w szufladzie(serwer) mamy łyżki(PHP, ruby, ...) i widelce (JS). Rozumiem że w przypływie nieokiełznanego artyzmu ktoś mógł stwierdzić, że widelce mogą być równie dobrze łyżkami (tylko trzeba je odpowiednio powyginać). Obserwując taką sytuację zrodziły się w mojej głowie następujące pytania:

1. No jasne że można, ale w sumie po co?

2. Czy wygięte widelce są w czymś lepsze od łyżek? A jeśli tak to w czym?

3. Czy zmniejszając ilość typów sztućców odciążymy naszą szufladę ułatwiając smakoszom dostęp? Czy może spowoduje to zamianę łyżek większą ilością widelców co doda nam tylko pracy, a szuflada nadal będzie się obrywać?

4. Czy warto uczyć się używania przestarzałych łyżek, skoro najnowszą modą są widelce?

 

**PS**

a) Wiem że pytanie pojawiało się już w wielu miejscach, lecz zawsze odpowiedzi były spłycone, artykuł był zmanipulowany przez emocje autora do tematu czy po prostu nie odpowiadał na postawione pytania. Rozmawiałem też z kilkoma ludźmi o temacie, ale odpowiedzi... były spodziewane (php-owiec twierdził że to bez sensu, a znajomy od frontend'u zachwalał pod niebiosa).

b) Jeżeli znacie jakieś dobre książki/artykuły/whateva które przybliżyły by mi sprawę prostym językiem, to proszę o linkowanie :)

1 odpowiedź

+3 głosów
odpowiedź 8 września 2016 przez Comandeer Guru (601,110 p.)
wybrane 9 września 2016
 
Najlepsza

Wiem że pytanie pojawiało się już w wielu miejscach, lecz zawsze odpowiedzi były spłycone, artykuł był zmanipulowany przez emocje autora do tematu czy po prostu nie odpowiadał na postawione pytania.

Załóżmy, że w szufladzie(serwer) mamy łyżki(PHP, ruby, ...) i widelce (JS). Rozumiem że w przypływie nieokiełznanego artyzmu ktoś mógł stwierdzić, że widelce mogą być równie dobrze łyżkami (tylko trzeba je odpowiednio powyginać). 

To chyba odpowiada na Twoje pytanie, czemu nie ma poważnej dyskusji w tym temacie. Sorry, ale jak się przychodzi i na start rzuca takim tekstem, to się zabija dyskusję. Bo nikt nie ma ani czasu, ani chęci tłumaczyć, czemu JS wcale nie jest wygiętym widelcem. 

Pytanie jest postawione w tak bezsensowny i prowokujący sposób, że jedyne, co można odpowiedzieć: doczytaj sobie czym jest node.js i czemu się go stosuje do tego, do czego się go stosuje. I czemu jego zakres zastosowania nie pokrywa się z zakresem stosowania PHP czy Ruby. Amen.

komentarz 8 września 2016 przez niezalogowany
Wybacz jeśli uraziłem z założenia prześmiewczą formą pytania. Stosując ten zabieg liczyłem na więcej odpowiedzi przez wciągnięcie w zabawę. Pytanie jest postawione poważnie, ponieważ mam mętlik w głowie od zbyt dużej ilości sprzecznych wypowiedzi na ten temat.

Czy odpowiesz na moje pytanie, czy będziesz się dąsał za ten mały pastiż? ;)
3
komentarz 8 września 2016 przez Comandeer Guru (601,110 p.)

Jak już mówiłem, główna różnica zasadza się pomiędzy zakresem stosowania. Omówię to na przykładzie PHP i node.js, bo te technologie znam najbardziej.

PHP reprezentuje klasyczny model działania aplikacji (czy strony) internetowej, gdzie mamy przepływ klient→żądanie→serwer→odpowiedź. Klient wysyła żądanie do serwera, ten składa stronę i odsyła klientowi – tyle. Cykl życia skryptu się kończy. Ma on jasno określony start i koniec. Co więcej: PHP jest po prostu interpreterem, który jest przypinany do serwera HTTP (czy to przez fast-cgi, czy przez moduł, jak w przypadku Apache'a).

node.js z kolei ma naturę eventową, bardzo podobną do tej, którą reprezentuje np. nginx. Co to oznacza? Sercem node.js jest event loop, który w bardzo uproszczonej postaci można zaprezentować na takim pseudokodzie:

while ( true ) {
    var events = getAllPendingEvents();

    events.forEach( ( event ) => {
        doInBackgroundAndThenCallBack( event );
    } );
}

Z racji tego, że JS z założenia jest jednowątkowy, wszystkie rzeczy albo blokują wątek, albo są rozwiązywane w sposób asynchroniczny. Nie ma tutaj standardowego modelu jak w PHP, gdzie jest jasno określone wejście i wyjście – tutaj każda akcja jest wrzucana do loopa i w odpowiednim momencie mielona. Jest to o tyle ważne, że node.js nie jest przypinane do żadnego serwera, ale samo odgrywa rolę serwera – de facto działa jako demon/usługa.

Z tego też powodu node.js stosuje się tam, gdzie potrzebna jest stała komunikacja z danym serwisem, np. w chacie/komunikatorze, gdzie połączenie idzie przez websockets – czyli w aplikacjach (pseudo)real time. Tutaj architektura eventowa jest wręcz naturalna. Inne zastosowanie to render frontu dla jakiegoś backendu (czyli tzw. middleend/backend for frontend).

Natomiast PHP stosuje się do klasycznych aplikacji internetowych. Gdybym miał postawić jakieś fajne REST API, wziąłbym właśnie PHP. Gdybym miał machnąć bloga, wziąłbym PHP.

Nie mam problemów z wyobrażeniem sobie systemu, w którym core (czyli REST API) stoi na PHP 7, a strona, z której user bezpośrednio korzysta, stoi na React.js/Ember.js i jest generowana właśnie przy pomocy lekkiego serwera w node.js. I tak to IMO powinno działać. Religijne przywiązanie do jednej czy drugiej technologii nie ma sensu. Bierze się to, co lepiej działa w konkretnym kontekście. A przynajmniej: powinno się.

komentarz 9 września 2016 przez niezalogowany
Dziękuję za odpowiedź i z niecierpliwością czekam na Pana książkę o JS :)
komentarz 9 września 2016 przez niezalogowany

Przepraszam, że odgrzewam już skończony temat, ale przespałem się i wyskoczyły nowe pytania. Piszę tu a nie na PW by ktoś inny nie dublował ich w nieskończoność.

a) Jak postawi się na serwerze JS, to kod Javascript będzie interpretowany normalnie przez przeglądarkę użytkownika, czy przez maszynę na serwerze? Jak przez przeglądarki to czy do komunikacji z przykładowym node.js będziemy musieli używać jakiegoś zmodyfikowanego JS?

b) Czy na jednym serwerze da się postawić PHP + node.js jako demona?

c) Wiem jak działa przesyłanie wiadomości JS->PHP za pomocą np.AJAX, ale jak działa to w drugą stronę, do tego pomiędzy serwerami?

Z góry dziękuję za odpowiedź i przepraszam jeszcze raz za trucie.

Stefan

komentarz 9 września 2016 przez Comandeer Guru (601,110 p.)

Jak postawi się na serwerze JS, to kod Javascript będzie interpretowany normalnie przez przeglądarkę użytkownika, czy przez maszynę na serwerze?

Serwer to serwer. To co dzieje się na serwerze… dzieje się na serwerze. Tyle. 

Jak przez przeglądarki to czy do komunikacji z przykładowym node.js będziemy musieli używać jakiegoś zmodyfikowanego JS?

Serwer jest dla przeglądarki transparentny. Jedynym sposobem komunikacji jest protokół HTTP/pokrewny. 

Czy na jednym serwerze da się postawić PHP + node.js jako demona?

W sensie podpiąć PHP pod serwer na node.js? Były jakieś próby, typu https://github.com/davidcoallier/node-php ale to IMO nie ma sensu. Po to się bierze node.js, żeby pisać kod serwerowy w JS. 

c) Wiem jak działa przesyłanie wiadomości JS->PHP za pomocą np.AJAX, ale jak działa to w drugą stronę, do tego pomiędzy serwerami?

Jak już mówiłem: serwer dla przeglądarki jest transparentny. Sposób wysyłania żądań do niego całkowicie się nie zmienia.

Natomiast pomiędzy serwerami można wykorzystać tak samo HTTP. I już ;) 

Podobne pytania

+1 głos
1 odpowiedź 1,323 wizyt
pytanie zadane 30 marca 2021 w Python przez Fablek Nowicjusz (210 p.)
0 głosów
4 odpowiedzi 1,098 wizyt
pytanie zadane 16 września 2020 w JavaScript przez Tomcio2287 Nowicjusz (220 p.)
–1 głos
2 odpowiedzi 351 wizyt
pytanie zadane 16 sierpnia 2019 w JavaScript przez LubieNalesniki Użytkownik (610 p.)

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...