Kiedy wykorzystywać PHP a kiedy JavaScript?

0

Witam!
Jestem tu nowy więc witam wszystkich.
Pytanie takie jak w temacie, Kiedy wykorzystywać PHP a kiedy JavaScript?
Poznałem trochę oba te języki, i doszedłem do etapu gdzie można je ze sobą łączyć. I tu się zaczynam gubić.
Do czego w praktyce wykorzystywany jest PHP a do czego JS. Wyczytałem że aplikacja webowa to tylko php,
natomiast js służy jedynie do dodawania dynamiki na stronie, upiększania jej, i robienia tak by się nie musiał przeładowywać
kiedy coś klikniemy.

1

Skoro poznałeś oba języki to wiesz że js jest wykonywany po stronie klienta a php serwera ?

1

tak wiem, i wiem że js można bez przeszkód podejrzeć, np. za pomocą firebuga, a php nie. Ale nie jestem w tym pro i wciąż się uczę, i takie coś mnie zaczęło nużyć.
Ich zastosowanie w praktyce. Zwłaszcza że chyba na oba języki jest zapotrzebowanie na rynku

0

Najprościej - jeżeli czegoś nie trzeba robić po stronie serwera nie robisz tego. Na js-a straszne parcie jest a php ma sporo wiernych fanów, zresztą php7 bije rekordy więc o pracę bym się nie martwił. Jeżeli js albo php miałyby być twoimi pierwszymi językami to odradzam w pythonie też się robi stronki a o wiele mniej wtf-owania (ogólnie zdaje mi się że php ma złą opinie bo ludzie biednie w nim piszą często).

0

Jeżeli coś ma zrobić server to piszesz to w php. Jeżeli coś ma zrobić klient to js. Simple.

A tak serio to zależy jakiego frameworka sobie wybierzesz. Teraz podobno modny angular2, a backend można w php/c#/node i takie tam inne. Właśnie, gdybyś pisał backend w node.js to nie miałbyś pytań, bo zawsze pisałbyś w js :)

Ale taki rule of thumb

Php:

  • dostęp do bazy (pobieranie, dodawanie rzeczy)
  • renderowanie widoku (to też zależy w sumie od frameworka)
  • zarządzanie jakimiś uprawnieniami
  • przechowywanie plików (jakiś zdjęć czy czegoś)
  • zarządzanie komunikacją między klientami (jakiś chat)

Js:

  • waliacja formularzy przed wysłaniem formularza
  • jeżeli angular2 to można całe webaplikacje w tym pisać (jakaś logika, kiedy ma sie co pojawic kiedy co sie kliknie)

Tak na prawdę ciężko tu zgadywać bo 99% rzeczy są oczywiste po której stronie powinny być wykonane, musiałbyś dać konkretny przykład.

0

Dzięki wielkie!
Mam jeszcze jedno pytanie. Kiedyś zainteresowałem się three.js oraz babylon.js są to biblioteki renderowania grafiki 3d w przeglądarce, zwalniają nas one z pisania od podstaw w webGL.
I tak wszytko szło fajnie, nawet udało mi wprowadzić do tego interaktywność można było przesuwać obiekty jak w jakieś prostej grze. I zacząłem się zastanawiać jak takie gierki działają.
Np wykorzystując to co mam z 3d to żeby dwie osoby naraz na jednej planszy mogły przesuwać swój obiekt, tak bez żadnej logiki gry itp, absolutne minimum żeby do działało. Wyczytałem że taka komunikacja to tylko websocket i właśnie node.js a php odpada. A gry typu plemiona działają w php tylko że tam widać to przeładowanie strony a mi zależny żeby go nie było.

Jakaś rada w tym temacie?

Od razu mówię daleko mi do stworzenia gry, zależy mi na razie na konkretnych funkcjonalnościach.

0

WebSockety są spoko, bo są lekkie, wydajne i dzięki nim możesz łatwiej mieć zależności tylko w jedną stronę (np źródło zdarzeń nie zależy od klientów, mimo że zdarzenia napływają do klientów natychmiast). Dynamiczne aktualizacje można jednak osiągnąć na wiele sposobów. Można użyć np Cometa: https://en.wikipedia.org/wiki/Comet_(programming)

0

Np wykorzystując to co mam z 3d to żeby dwie osoby naraz na jednej planszy mogły przesuwać swój obiekt, tak bez żadnej logiki gry itp, absolutne minimum żeby do działało. Wyczytałem że taka komunikacja to tylko websocket i właśnie node.js a php odpada.

Technologia to pikuś. Większym problemem jest przy tego rodzaju rzeczach zsynchronizowanie poszczególnych użytkowników, a nie to, jakiej technologii użyjesz. Masz problemy typu "jak zrobić to, żeby gracz A widział obiekt w tym samym miejscu ekranu co użytkownik B po drugiej stronie planety?" albo "jak zabezpieczyć grę przed cheatowaniem?". To czy użyjesz Node, PHP czy jeszcze czego innego, to zaledwie jedna z wielu decyzji projektowych, które trzeba podjąć.

(ogólnie zdaje mi się że php ma złą opinie bo ludzie biednie w nim piszą często).

To prawda, że ludzie biednie piszą w PHP. Problem w tym, że ludzie biednie piszą we wszystkim co się da. Widziałem już biedne kody nawet w Pythonie (co jest pewną profanacją, bo taki ładny język, a ludzie potrafią tak brzydko pisać w nim).

0

Na razie nie zależy mi na tworzeniu gry jako takiej, obecnie może być podatne na ataki i inne chety. Obecnie chce absolutnego minimum aby takie coś zadziało. Dwa komputery, dwóch ludzi wchodzi na stronkę, logują. Pokazuje sie pusta plansza dwa klocki i każdy przesuwa swój, jednocześnie widzi jak przesuwa się klocek tego drugiego, i tyle. Konta zrobione nawet na sztywno bez możliwości rejestracji. Nie chce od razu robić milion innych bajerów, jak pisałem absolutne minimum żeby zadziałało.

0

Najlepiej będzie chyba jak zobaczysz u źródła jak się takie coś robi, jakieś githubowe open-source gry etc.
Np: klon agar.io https://github.com/huytd/agar.io-clone , może nie jest to grafika 3d ale 2d canvas, jednak coś pewnie możesz podpatrzeć.
A tak swoją drogą:
https://www.google.pl/search?q=three.js+kmultiplayer , tu też sporo znajdziesz

0

Wadą PHP jest to że konieczna jest komunikacja z serwerem (najczęściej odświeżenie strony) a nawet jeśli AJAX to są opóźnienia, inną jest obciążanie serwera pracą, wadami JS jest że nie można mu ufać i trochę z tym powiązane że JS nie ma bezpośredniego dostępu do baz danych a SQL to trzeci niezbędny zwykle element aplikacji internetowej

PS: TomRiddle, parę razy edytowałem tekst postu i wypadł mi z tekstu ale nie z głowy kontekst formularzy i gier webowych. Chyba w każdym backendowym języku poza tym rzadkim wyjątkiem kiedy nie ma klienta w tedy komunikacji z serwerem też ;) ... ale omawiamy różnicę między JS a PHP (frontendowym i backendowym językiem) więc miałem nadzieję pokazać ją od tej strony.

1
noHumanus napisał(a):

Wadą PHP jest to że konieczna jest komunikacja z serwerem (najczęściej odświeżenie strony)

To nie jest jego wada tylko jest to jego jedno z wielu zadań do których PHP zostało stworzone. Ludzie są negatywnie nastawieni do php, bo nie rozumieją do czego ten język służy. Podobnie jest z html i css które są świetnymi językami programowania które mają określony cel i zakres zastosowania, ale przyjdzie Ci taki śmieszek i powie, że najkrótszy żart programistyczny to programista php, a jeszcze krótszy to programista js.

Na temat kilku najczęściej wyśmiewanych języków w uproszczeniu:
php - język do komunikacji z serwerem, pośredniczący w komunikacji z bazą danych (bezpośrednio na bazie operujemy językiem SQL, jedną z jego popularniejszych odmian jest MySQL)
html - język do tworzenia szkieletu warstwy wizualnej (dzielenie strony na kolumny, wyznaczanie gdzie są paragrafy, artykuły, linki, formularze, itd.)
css - do kolorowania, formatowania szkieletu warstwy wizualnej
js - js operuje na szkielecie warstwy wizualnej, może na nim wykonywać operacje, a także może go formatować, czyli jest bardzo uniwersalny. Gdy jakaś wersja jakiejś niszowej przeglądarki (np. internet explorer lub firefox) nie obsługuje jakiegoś nowego selektora css to można w js napisać 1000 linii kodu które zrobią dokładnie to co robi ten selektor.

Autorowi tematu polecam zapoznanie się na razie jedynie z teorią MVC. Dopiero uczysz się programować i widzę, że ciekawe rzeczy robisz, podoba mi się to, ale musisz wiedzieć jak działa strona internetowa, a MVC jest wzorcem projektowym który według mnie idealnie definiuje i uzmysławia sposób, zasady działania strony internetowej/webaplikacji. Dlaczego? M - model, V- view (widok), C - controller (kontroler). Co to konkretnie oznacza? Model odpowiada za operacje na bazie danych, view za wygląd strony, a controller za tzw logikę (nie lubię jak początkującym wbija się to słowo do głowy, bo nic im ono nie mówi, podobnie jak mówienie o klasach i obiektach jako formie realizacji jakiejś "rzeczywistości", sorry, ale osoba zielona w programowaniu nie ma pojęcia czym owa rzeczywistość tak naprawdę jest), czyli wykonywanie działań, instrukcji, operacji takich jak np wykonywanie pętli, instrukcji warunkowych, konkretnych funkcji (by nie podawać najgorszego przykładu, czyli print() lub echo() to podam trim(), czyli funkcja do usunięcia białych znaków z początku i końca ciągu znaków), tablice jedno i wielowymiarowe, klasy, obiekty, itd.

Po tym jak przeczytasz artykuł albo dwa albo kilka o mvc powinieneś już dobrze wiedzieć kiedy i jak należy korzystać z js, php, a kiedy można w ogóle z nich nie korzystać i zastąpić je czymś prostszym. Do wyświetlenia słowa na stronie nie używajmy obiektu klasy HelloWorld tylko dajmy najnormalniej w świecie

Hello world

, ale kto k... chce używać programowania do wyświetlania napisu, programując chcemy stworzyć narzędzie które pozwoli nam wyświetlić napis jako jeden z wielu elementów naszego programu. Jak chcę wyświetlić na ekranie hello world to otwieram notatnik albo nano i w nim piszę te koszmarne "hello world", nawet użycie ms word/libre office writer byłoby użyciem zbyt potężnego narzędzia do wykonania zbyt prostego zadania.</p>
0

PHP jest po prostu popularny i tani, na stronach się głównie zarabia więc liczą się roboczogodziny, proste

0

PHP jest tani pod warunkiem, że robisz prosty skrypt dla pani Małgosi na stronę (tu rzeczywiście PHP pomaga) ;) A jeśli robisz większą aplikację, to atut kosztowy przestaje się liczyć - no chyba, że jako alternatywę bierzesz takie monstra jak JEE. :D

W przerzucaniu mechanizmów JS jest jedna ogromna wada: jego kod jest publicznie dostępny (nawet jeśli jest "uglified"), a jeśli backend i działanie apki zależy od wyniku działania kodu po stronie klienta, to trzeba uznać, że zostanie on zhackowany. :P To przewaga robienia logiki po stronie backendu, zresztą założyłem wątek w tym temacie: Logika w Backend czy Frontend?

Jak znajdę chwilkę, to się też tam wypowiem.

0

W przerzucaniu mechanizmów JS jest jedna ogromna wada: jego kod jest publicznie dostępny (nawet jeśli jest "uglified"), a jeśli backend

Zależy czy użyjesz JS po stronie klienta, czy po stronie serwera (NodeJS). Wiadomo, że kod w przeglądarce jest dostępny, ale nikt nie każe wsadzać całego kodu JavaScript do przeglądarki :)

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