NodeJS - przyszlosc?

Eluzive
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

Witam
Wiem, że tematy tego typu były na forum ale ostatnimi czasy nie widziałem nic na temat a jak wszyscy wiemy, technologie i świat IT idzie do przodu w bardzo szybkim tempie.
Chciałbym spytać doświadczonych programistów o to jak obecnie postrzegają tą technologię razem z jej wszystkimi dodatkami (express, socket.io etc.). Z praktycznie wszystkich benchamrków jakie widziałem wynikało, że PHP pod względem szybkości bije na głowe, możliwości w zasadzie też daje takie same, a jeśli czegoś brakuje myśle, że w najbliższej przyszłości się pojawi bo technologia jest cały czas rozwijana i stosunkowo młoda. Więc mam takie pytanie - czy wart odchodzić od PHP na rzecz nodeJS? Mam pełną świadomość, że nie należy całkowicie ignorować PHP ale czy jeśli mamy taką możliwość to warto skorzystać z nodeJS? Sprawa jest oczywista w aplikacjach realtime typu czaty, gry, jakies aplikacje webowe, ale co sadzicie o stronach CRUD? Czy obecnie wszelkie stronki nie dążą do pełnej interaktywności z użytkownikiem co za tym idzie relacjami realtime?

Za wszelkie odpowiedzi z góry dziękuje i mam nadzieję na ciekawą dyskusję
Pozdrawiam
Eluzive

bordeux
  • Rejestracja:około 18 lat
  • Ostatnio:7 miesięcy
  • Lokalizacja:Chorzów
  • Postów:1130
1

NodeJS to bardzo ciekawy twór. Cała jego struktura, zbudowana na eventach została dobrze przemyślana. W stosunku do PHP, część rzeczy nie jest powtarzana - takich jak ładowanie pluginów, ładowanie zmiennych środowiskowych, łączenie się z bazą danych itp. To pozwala na oszczędzenie sporej ilości czasu.

Jedyną rzeczą, która odpycha mnie od NodeJS'a to sam JavaScript.
Niestety, bardzo ciężko się w nim pisze tak, aby jakość kodu była na wysokim poziomie. Sama asynchroniczność powoduje trochę bajzel w kodzie. Harmony to ma trochę poprawić (klasy, await, w sumie też yield (generatory) mogą ułatwić asynchroniczność - ale na chwilę obecną tylko generatory z tej listy są już dostępne).

Dlatego też na chwilę obecną nie wyobrażam sobie pisanie czegoś w Nołdzie bez użycia TypeScript (wedle mojej opinii), który pozwala trzymać czystość i obiektywność w kodzie, a odpowiednie IDE pozwoli na precyzyjne podpowiadanie składni.

A co do PHPa to nie należy go tak szybko przekreślać. Weź pod uwagę, że powstał twór jak hhvm, który dodaje trochę mocy do pehapa. Kolejną rzeczą , ciekawą jest moduł events dla PHP - pozwala on stosować PHP tak samo jak NodeJS'a. Łatwość i przejrzystość kodu PHP + eventy ? Jak dla mnie fajna sprawa.


:)
Eluzive
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

A tak na marginesie... wspomniałeś o poziomie kodu i TypeScript. A miałeś może styczność z którymś z popularnych frameworków w JS (jQuery, Ember, Angular, Backbone)? Który w twojej opinii jest najprzyjemniejszym środowiskiem pracy?
Dla niektórych zaletą zastosowania node'a może też być jako taka spójność aplikacji, bo wtedy jakby nie było całość postawiona jest w jednym języku.
A nie wiecie może jak przedstawia się node od strony bezpieczeństwa?

bordeux
  • Rejestracja:około 18 lat
  • Ostatnio:7 miesięcy
  • Lokalizacja:Chorzów
  • Postów:1130
0

Frameworki, któe wymieniłeś to są po stronie klienta. Do NodeJSa ich za bardzo nie użyjesz - całkiem inna logika ich jest. Ale jeśli miałbym wybierać to oczywiście AngularJS + Angular UI (z ui route). Bardzo przyjemny, dużo tutoriali, duży support i gwarancja od gugla.

Node od strony bezpieczeństwa.... hmm, co masz na myśli dokładnie? Bo bezpieczeństwo webaplikacji jest w rękach programisty :)


:)
Eluzive
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

Wiem, że to technologie client-side dlatego wspomnialem "na marginesie" ;).
Mówiąc o bezpieczeństwie miałem na myśli w sumie czy względnie łatwo jest wyszukać i wykorzystać lukę w kodzie początkującego-średnio zaawansowanego programisty która pozwoliłaby na zaszkodzenie aplikacji. No i czy nie ma jakichś sytuacji które mogą zajść w kodzie przy jakimś popularnym problemie a które byłyby skłonne stwarzać zagrożenie. Mam nadzieję, że w miarę widać co mam na myśli.

PS. Tutaj znalazłem listę hostingów które pozwalają nam na uruchomienia naszej aplikacji w nodeJS bez potrzeby bawienia się z VPSem. Tutaj stety niestety punkt na konto PHP bo jednak maszyn z Apachem lub inna aplikacja (nginx :) ) emulującą skrypty php jest nieporównanie więcej.
https://github.com/joyent/node/wiki/Node-Hosting

LukeJL
ee? nie rozumiem ostatniego zdania. Co miałeś na mysli poprzez "emulowanie skryptów PHP"? (intepretowanie chyba?)
Eluzive
Przejezyczenie choc w zasadzie sprowadza sie do tego samego. Aplikacji, pozwalajacych uruchomić skrypt PHP - myślę, że to jest poprawne politycznie ;).
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8411
1

Więc mam takie pytanie - czy wart odchodzić od PHP na rzecz nodeJS? Mam pełną świadomość, że nie należy całkowicie ignorować

raczej "czy warto kurczowo trzymać się PHP?" ;)


0

Warto poczytać opinie dużych graczy, którzy wdrożyli Node'a na produkcję. W Polsce takich projektów nie jest dużo w porównaniu do innych technologii.
CRUD-y pisze się bardzo szybko, w połączeniu z jakimś generatorem zysk czasowy jest duży i można się skupić bardziej na interfejsie niż backendzie. Współpracuję z programistami Javy i niestety czasami idzie to jak krew z nosa.
A co do krytyki JS - często spotykam się z brakiem zrozumienia tego języka. Lubię nowe zabawki z ES6, ale jednocześnie kocham ten język ze wszystkimi jego wadami i bez tych "usprawnień". ;) A przeszedłem ze środowiska Pythona, więc niektórzy mogliby uznać to za krok wstecz.

LukeJL
bo to jest krok wstecz, ale co zrobić? Na szczęście ES6 ma mieć mnostwo ficzerów podobnych do tych, które w pythonie, więc może coś jeszcze będzie z tego języka ;)
M8
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:1
0

Witam a wie może ktoś z was jak zainstalować hhvm na linuxie w ovh jest kilka wersji do wyboru
Proszę o pomoc i z góry dziękuje

bordeux
A masz vpsa lub detyka? Łatwiej niż tutaj https://github.com/facebook/hhvm/wiki/Getting-Started nie da się wytłumaczyć , myślę.
KO
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 miesiące
  • Postów:135
0

Aplikacje typu CRUD i realtime napiszesz tak na prawdę we wszystkim. Pytanie czy rozumiesz mechanizm obsługi requestów w PHP a w node.js. Tutaj raczej bym powiedział o liczbie obsługiwanych requestów przez aplikację. Gdzieś w sieci jest artykuł o tym dlaczego np. PayPal przeszedł na node.js - poszukaj sobie.
Po za node.js jest jeszcze moim zdaniem fajniejsza "zabawka" - vert.x. Teraz wchodzi powoli wersja vert.x3 i tam się trochę zmieni co do obecnej wersji.
Żeby to wszystko zrozumieć musisz poznać mechanizm obsługi requestów dla tych frameworków/platform. Jakbyś był zainteresowany to właśnie rozpoczynam pisać pracę magisterską i jak napiszę wstęp to mogę Ci udostępnić wyjaśnienie tych różnic.

spartanPAGE
Jeśli mógłbym, to ja chęrnie bym poczytał nawet całą pracę :-)
KO
To przypomnij się za rok :P
pieczara
czy praca jest dostępna? :)
rubaszny_karp
" "zabawka" - vert.x" - możesz robić jeszcze szybciej - bezpośrednio netty
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)