Jesteś programistą PHP. Rozumiem to. Moja podróż do PHP nie przebiegała normalną drogą, którą większość programistów PHP przemierza w poszukiwaniu idealnego języka programowania. Początkowo pracowałem jako Java Developer i spędziłem około 10 lat żyjąc w tym języku. Byłem jednym z tych zatwardziałych programistów Javy i kiedy PHP pojawiało się w rozmowie, zaczynałem opowiadać o takich rzeczach jak przedsiębiorczość, skalowalność i inne bzdury.
Zacząłem pracować nad projektem open source, który potrzebował front-endu dla sieci społecznościowych około 5 lat temu i zespół musiał wybrać język programowania dla tej strony. Badałem Javę i większość innych języków, ale z wielu powodów zdecydowałem się na PHP. Ciężko było mi przełknąć dumę i zacząć kodować w PHP, ale to, co wydarzyło się podczas tego projektu, było niczym innym jak cudem. Zakochałem się w tym języku i zacząłem go używać w tak wielu projektach, jakie tylko mogłem znaleźć, pozostawiając jednocześnie w tyle moje korzenie w Javie. PHP dobrze mi służył przez ostatnie 5 lat, ale wciąż szukałem świętego Graala – języka programowania, w którym można szybko się rozwijać, który ma wsparcie korporacyjne, jest wydajny i skalowalny, a jednocześnie zapewnia silną społeczność programistów. Wierzę, że Node.js spełnia wszystkie moje wymagania, jednocześnie będąc szybko rozwijającym się i ewoluującym językiem.
Pierwszą rzeczą, którą musisz zrozumieć jest to, że Node.js nie jest tylko dla hipsterskich deweloperów lub wczesnych użytkowników. Jest on używany przez niektóre z najbardziej obleganych stron internetowych w Internecie i nadal zdobywa serca i umysły programistów. Jest to naprawdę punkt, w którym można mu zaufać nawet w przypadku najbardziej skomplikowanych systemów.
Node.js to JavaScript##
Jeśli myślisz, że musisz nauczyć się zupełnie nowego języka, aby być produktywnym z Node.js, prawdopodobnie jesteś w błędzie. Większość programistów zna już JavaScript i jest to język i semantyka, z którą będziesz pracować podczas kodowania w Node.js. W rzeczywistości, ostatni artykuł opublikowany przez Red Monk, który próbuje nadać sens projektom na githubie, aby określić najpopularniejsze języki, ma JavaScript jako króla. Trzy najpopularniejsze języki są następujące:
- JavaScript
- Java
- PHP
Biorąc pod uwagę popularność JavaScript i jego powszechne przyjęcie w naszej branży, jeśli jeszcze nie jesteś z nim zaznajomiony, prawdopodobnie nadszedł czas, aby zapiąć pasy i zacząć się go uczyć.
Jeśli Node.js po prostu używa JavaScript, co to dokładnie jest? ##
W skrócie, Node.js jest platformą dla działań po stronie serwera. Używa języka programowania Javascript i ma mnóstwo bibliotek dostępnych jako moduły npm. Możesz myśleć o tych modułach npm jako o zależnościach bibliotecznych, które mogą być zaspokojone przez Composer, jeśli pochodzisz z ziemi PHP. W rzeczywistości, domyślny system zarządzania zależnościami dla PHP (Composer) został zainspirowany przez Node.js, jak podaje oficjalna strona. Jeśli potrzebujesz trochę funkcjonalności i nie masz ochoty pisać całego kodu samemu, istnieje moduł npm, który już zapewnia funkcje, których szukasz.
Aplikacje węzła są zwykle wdrażane, gdy trzeba zmaksymalizować wydajność poprzez wykorzystanie nieblokującego I/O i asynchronicznych zdarzeń. Jednym z problemów dla programistów PHP jest to, że aplikacje Node.js działają w jednym wątku. Jednakże, backendowy kod Node.js używa wielu wątków do operacji takich jak dostęp do sieci i plików. Biorąc to pod uwagę, Node jest idealny dla aplikacji, w których wymagany jest czas rzeczywisty.
Początek z przykładowym projektem##
W pozostałej części tego wpisu na blogu pokażę Ci, jak rozpędzić się z Node.js, mając do czynienia z PHP. Przykładowa aplikacja, którą napiszemy jest prostą usługą backendową, która będzie dostarczać informacje o lokalizacji każdego sklepu Walmart. Wybrałem Walmart do tego przykładu, ponieważ jest to po prostu Święty Graal wszystkich domów towarowych. Jeśli Walmart go nie ma, nie potrzebujesz go.
Pod koniec tego wpisu na blogu zobaczysz, jak szybko i łatwo jest stworzyć API oparte na REST przy użyciu Node.js, które jest zasilane przez popularną bazę danych MongoDB. Wybrałem ten przykład oparty na REST, ponieważ tworzenie backendowego API szybko stało się powszechnym przypadkiem użycia w większości nowoczesnych aplikacji.
Pierwotnie planowałem stworzyć tę samą aplikację zarówno w PHP, jak i Node.js, aby ułatwić Ci przejście, ale aby omówić wszystkie różne frameworki i sposoby tworzenia usług opartych na REST w PHP, należałoby napisać całą książkę i po prostu nie da się tego zrobić w jednym wpisie na blogu. Pomyślałem wtedy o użyciu frameworka Laravel, który cieszy się coraz większą popularnością. Jednak i tak dotarłbym tylko do jednej czwartej programistów PHP. Osobiście, moim ulubionym frameworkiem jest CodeIgniter, ale szybko traci on na popularności i obecnie stanowi mniej niż 8% populacji programistów PHP. Sitepoint opublikował ostatnio artykuł omawiający właśnie tę kwestię i przedstawia następujący wykres obrazujący frameworki, które są najbardziej obiecujące w 2014 roku.
Zważywszy na ogromne różnice w sposobie konfigurowania połączeń z bazą danych i tworzenia usług REST dla każdego frameworka, założę, że wiesz jak to zrobić dla swojego frameworka w PHP i zamiast tego skupię się tylko na kodzie Node.js.
Tworzenie naszej aplikacji Node.js##
W pozostałej części tego wpisu zamierzamy stworzyć aplikację lokalizatora Walmart przy użyciu frameworka LoopBack API firmy StrongLoop. Jako dodatkowy bonus, przeprowadzę Cię przez instalację Node.js na OSX. Więc weź filiżankę kawy, usiądź wygodnie, zrelaksuj się i bierzmy się do pracy.
Krok 1: Instalacja Node.js##
Najprostszym sposobem na zainstalowanie Node.js jest jeden z dostępnych pakietów binarnych, który jest dostępny dla większości systemów operacyjnych. Skieruj przeglądarkę na następujący adres URL i pobierz odpowiedni dla swojego systemu operacyjnego:
http://nodejs.org/download/
Po załadowaniu strony powinieneś zobaczyć następujący obraz:
Jeśli używasz systemu Mac OSX, kliknij uniwersalny plik .pkg. Spowoduje to zapisanie programu instalacyjnego na lokalnym komputerze. Po pobraniu pliku uruchom program instalacyjny, klikając dwukrotnie na pobrany plik .pkg, a zostanie wyświetlone okno dialogowe instalacji:
Wykonaj proces instalacji, używając wszystkich ustawień domyślnych, a następnie kliknij przycisk Zamknij, aby zamknąć program po pomyślnym zakończeniu instalacji. Całkiem proste, prawda?
Krok 2: Instalacja LoopBack z NPM
Teraz, gdy mamy Node.js zainstalowany w naszym lokalnym systemie, chcemy zainstalować pakiety LoopBack, które są dostarczane przez StrongLoop. LoopBack to framework API o otwartym kodzie źródłowym, który zapewnia funkcjonalność, która ułatwi ci życie, gdy zaczniesz się uczyć, jak pisać i wdrażać oprogramowanie napisane w Node.js.
Aby zainstalować LoopBack, użyjemy polecenia npm, które jest częścią podstawowej dystrybucji Node.js. NPM jest oficjalnym menedżerem pakietów do instalowania bibliotek lub modułów, od których zależą Twoje aplikacje. Biorąc pod uwagę, że ten post jest napisany dla programistów PHP, łatwym sposobem myślenia o modułach NPM jest odniesienie go do Composera. Używając systemu zależności Composera, deweloperzy są w stanie określić zależności w pliku composer.json. Po zdefiniowaniu pakietów w pliku composer.json, programista PHP musi po prostu wydać polecenie install, które powinno być podobne do poniższego:
$ php composer.phar install
Moduły NPM działają w ten sam sposób i używają pliku package.json, aby umożliwić określenie zależności dla konkretnej aplikacji. Możesz również zainstalować zależności z wiersza poleceń, aby udostępnić je w swoim lokalnym systemie. Nie martw się, jeśli jeszcze tego nie rozumiesz, ponieważ zajmiemy się plikiem package.json bardziej szczegółowo w późniejszym kroku.
Aby zainstalować LoopBack, możemy wydać jedno polecenie, które pobierze i zainstaluje wszystkie zależności, których potrzebujemy dla pakietu. Otwórz okno terminala i wydaj następujące polecenie:
$ npm install -g strongloop
Uwaga: Być może będziesz musiał użyć sudo w zależności od twojej instalacji
Co się właśnie stało? Powiedzieliśmy npm, że chcemy zainstalować pakiet strongloop, jednocześnie podając opcję -g
. Opcja -g
sprawia, że pakiet jest dostępny jako pakiet globalny, z którego może korzystać każdy w systemie i jest dostępny dla wszystkich aplikacji. Po uruchomieniu powyższego polecenia, NPM pobierze pakiet, jak również wszelkie zależności, które są wymagane. W zależności od szybkości systemu, może to potrwać kilka minut.
Krok 3: Tworzenie naszej aplikacji##
Tworzenie aplikacji przy użyciu LoopBack API jest bardzo łatwe i proste. Wystarczy otworzyć okno terminala i wydać następujące polecenie, aby utworzyć nową aplikację o nazwie locatewalmart
.
$ slc loopback _-----_ | | .--------------------------. |--(o)--| | Let's create a LoopBack | `---------´ | application! | ( _´U`_ ) '--------------------------' /___A___\ | ~ | __'.___.'__ ´ ` |° ´ Y ` Enter a directory name where to create the project: locatewalmart create locatewalmart/ info change the working directory to locatewalmart
Narzędzie slc
utworzy teraz nowy projekt oparty na LoopBack o nazwie locatewalmart
i skonfiguruje go. Kiedy zostaniemy poproszeni o nazwę aplikacji, możemy zachować domyślną.
What's the name of your application? locatewalmart
Po uruchomieniu powyższego polecenia, zostanie utworzony nowy katalog dla Twojego projektu dla Twojej aplikacji. Przejdź do katalogu aplikacji za pomocą polecenia cd:
$ cd locatewalmart
Teraz, gdy mamy już utworzoną naszą aplikację, chcemy dodać obsługę MongoDB jako źródła danych dla pętli zwrotnej.
Krok 4: Definiowanie naszego źródła danych##
Aby móc komunikować się z MongoDB, musimy dodać źródło danych do naszej aplikacji. Robimy to poprzez uruchomienie:
$ slc loopback:datasource mymongo Enter the data-source name: mymongo Select the connector for mymongo:PostgreSQL (supported by StrongLoop)Oracle (supported by StrongLoop)Microsoft SQL (supported by StrongLoop)❯ MongoDB (supported by StrongLoop)SOAP webservices (supported by StrongLoop)REST services (supported by StrongLoop)Neo4j (provided by community)(Move up and down to reveal more choices)
Krok 5: Wskazanie na prawdziwe źródło danych##
Aby komunikować się z MongoDB, musimy wskazać źródło danych na rzeczywistą instancję MongoDB. LoopBack definiuje całą konfigurację datasource w pliku datasource.json
, który znajduje się w katalogu root/server
Twojej aplikacji. Otwórz ten plik i dodaj źródło danych dla MongoDB, jak pokazano w poniższym kodzie:
{ "db": { "name": "db", "connector": "memory" }, "mymongo": { "name": "mymongo", "connector": "mongodb" "url": "mongodb://localhost:27017/locatewalmart" }}
Uwaga: Upewnij się, że podałeś poprawny adres URL połączenia dla swojej bazy danych MongoDB. Dla tego przykładu, mam bazę danych utworzoną lokalnie o nazwie locatewalmart, której chcę użyć dla mojego źródła danych.
Teraz, gdy mamy zdefiniowaną naszą bazę danych, jest kilka dodatkowych rzeczy, które musimy zrobić. Przede wszystkim musimy określić, że nasza aplikacja zależy od pakietu loopback-connector-mongodb
. Aby określić zależność, modyfikujemy plik package.json, co jest podobne do edycji pliku composer.json
w PHP. Otwórz plik package.json
, który znajduje się w katalogu głównym twojej aplikacji i dodaj loopback-connector-mongodb
do sekcji zależności. Po tym możesz uruchomić npm install.
Alternatywnie możesz po prostu uruchomić:
$ npm install loopback-connector-mongodb --save
To spowoduje automatyczną aktualizację package.json
. Sekcja powinna wyglądać następująco:
"dependencies": { "compression": "^1.0.3", "errorhandler": "^1.1.1", "loopback": "^2.0.0", "loopback-boot": "^2.0.0", "loopback-connector-mongodb": "^1.4.1", "loopback-datasource-juggler": "^2.0.0", "serve-favicon": "^2.0.1" }
Krok 6: Importowanie danych do MongoDB##
Teraz, gdy mamy skonfigurowane nasze źródło danych, musimy załadować zestaw danych do naszej bazy danych MongoDB.
Pierwszą rzeczą, którą chcemy zrobić, jest pobranie pliku JSON, który zawiera wszystkie dane, które chcemy zwrócić. Możesz go pobrać pod następującym adresem URL:
https://dl.dropboxusercontent.com/u/72466829/walmart.json
Gdy masz już pobrany zestaw danych, po prostu zaimportuj go do swojej bazy danych za pomocą polecenia mongoimport, jak pokazano poniżej:
$ mongoimport --jsonArray -d locatewalmart -c store --type json --file walmart.json -h yourMongoHost --port yourMongoPort -u yourMongoUsername -p yourMongoPassword
Powinieneś zobaczyć następujące wyniki:
connected to: 127.0.0.12014-08-17T13:07:26.301-0400 check 9 31762014-08-17T13:07:26.305-0400 imported 3176 objects
Krok 7: Tworzenie modelu naszego Sklepu##
O modelu można myśleć w tych samych kategoriach, w jakich myśli się o modelach w krainie PHP, jeśli używa się frameworka MVC. Jest to reprezentacja obiektu, który w tym przypadku jest sklepem Walmart. LoopBack dostarcza wygodny sposób na tworzenie obiektów modelu za pomocą linii poleceń. Otwórz okno terminala, przejdź do folderu projektu i wydaj następujące polecenie:
$ slc loopback:model
To rozpocznie interaktywną sesję, w której będziesz mógł zdefiniować swój model. Pierwszą rzeczą, o którą zostaniesz zapytany, jest źródło danych, z którym chcesz powiązać model. Wybierzemy źródło danych mymongo, które utworzyliśmy wcześniej. Następnie zostaniesz poproszony o nazwę mnogą dla modelu. Użyjmy domyślnej (stores) i naciśnij enter.
Enter the model name: store Select the data-source to attach store to:db (memory)❯ mymongo (mongodb) Expose store via the REST API? Yes Custom plural form (used to build REST URL):
Po naciśnięciu klawisza enter, zostaniesz poproszony o określenie właściwości modelu store. Możesz myśleć o tym jako o var(s), które definiujesz na klasie w PHP.
Enter an empty property name when done. Property name:
Właściwościami, które chcemy dodać, są typ sklepu, data otwarcia, szerokość i długość geograficzna.
Property name: opendate invoke loopback:property
Po naciśnięciu klawisza enter zostaniesz poproszony o podanie typu danych dla każdej z podanych właściwości. Pierwszym elementem będzie opendate i chcemy zaznaczyć, że jest on typu date. Wybierz date i naciśnij klawisz enter.
Property type: string number boolean object array❯ date buffer geopoint (other)
Wtedy zostaniesz zapytany czy chcesz, aby ta właściwość była wymagana do walidacji schematu. Wpiszemy „tak”.
Required? (y/N) : y
Wtedy zostaniesz zapytany o typ danych dla każdej z pozostałych właściwości. Udziel następujących odpowiedzi:
Property name: type_store invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : yLet's add another store property.Enter an empty property name when done. Property name: latitude invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : yLet's add another store property.Enter an empty property name when done. Property name: longitude invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : y
Wpisz „tak” i naciśnij klawisz Enter.
Gratulacje! Właśnie utworzyłeś swój pierwszy obiekt modelu przy użyciu LoopBack w połączeniu z Node.js. Aby zobaczyć, co tak naprawdę zostało utworzone pod przykrywką, otwórz plik store.json
, który znajduje się w katalogu root/common/models
w katalogu aplikacji. Znajdź wpis stores, który będzie wyglądał następująco:
{ "name": "store", "base": "PersistedModel", "properties": { "opendate": { "type": "date", "required": true }, "type_store": { "type": "string", "required": true }, "latitude": { "type": "string", "required": true }, "longitude": { "type": "string", "required": true } }, "validations": , "relations": {}, "acls": , "methods": }
Jak widać, mamy utworzony model, a właściwości, które zdefiniowaliśmy, są przypisane do modelu store. Pole public określa, że chcemy wystawić ten model na świat poprzez usługę webową REST.
Mapowanie modelu do datasource jest zdefiniowane w model-config.json
pod katalogiem app root/server. Pole datasource określa źródło danych, którego ten model będzie używał do operacji CRUD.
"store": { "dataSource": "mymongo", "public": true }
Krok 8: Przetestuj interfejs API oparty na REST##
Guess what? Właśnie stworzyłeś swoją pierwszą usługę internetową opartą na REST przy użyciu Node.js. Nie było tak źle, prawda? Sprawdźmy to, kierując naszą przeglądarkę na aplikację, którą właśnie stworzyliśmy. Można to zrobić, przechodząc do następującego adresu URL:
http://0.0.0.0:3000/api/stores/
Pojawi się reprezentacja JSON wszystkich sklepów Walmart, które zaimportowaliśmy do bazy danych, jak pokazano na poniższym obrazku:
Używanie StrongLoop Explorer##
Cóż, to świetnie. Mamy punkt końcowy REST, który zwróci wszystkie sklepy Walmart w bazie danych, ale wydaje się, że nadal brakuje nam trochę interfejsu zarządzania, aby pracować z danymi lub sprawdzić, czy wszystkie operacje CRUD działają. Na szczęście StrongLoop udostępnia wygodną przeglądarkę, która pozwoli Ci zbadać wszystkie punkty końcowe, jakie posiada Twoja aplikacja. Aby to przetestować, otwórz przeglądarkę i przejdź pod następujący adres URL:
http://0.0.0.0:3000/explorer/
Po załadowaniu strony Explorer rozwiń interfejs stores
API, aby zobaczyć wszystkie dostępne operacje, które są dozwolone na obiekcie modelu. Pokazano to na następującym obrazku:
Jako przykład tego, co można zrobić za pomocą Eksploratora, rozwiń interfejs API /stores/findOne
i kliknij łącze Try it out!
, które wywoła zapytanie do bazy danych i zwróci jeden rekord, jak pokazano na poniższym obrazku:
Postępując nieco dalej poprzez dodanie reprezentacji mapy##
Absolutnie, stworzyliśmy punkt końcowy oparty na protokole REST, który zwróci listę wszystkich sklepów Walmart w naszej bazie danych. Aby jeszcze bardziej zilustrować szybkość, z jaką można tworzyć pełne aplikacje za pomocą StrongLoop, zbudujmy responsywny front-end, który zawiera mapę z pinezkami dla każdego sklepu Walmart.
Krok 1: Utwórz katalog publiczny##
Domyślnie, jak określono w pliku app.js projektu, wszelkie pliki w katalogu publicznym znajdującym się w katalogu głównym aplikacji będą serwowane żądającemu. Jednak katalog ten może domyślnie nie istnieć, więc musimy go utworzyć. Otwórz terminal, przejdź do katalogu głównego swojej aplikacji i wydaj następujące polecenie:
$ mkdir public
Krok 2: Utwórz mapę responsywną##
Kolejną rzeczą, którą musimy zrobić, jest stworzenie ładnej reprezentacji danych. Ponieważ mamy szerokość i długość geograficzną każdego sklepu, byłoby świetnie wyrazić tę zawartość za pomocą mapy, którą użytkownik może przeciągać, przybliżać i oddalać, itp. To zadanie jest w rzeczywistości dużo łatwiejsze niż można by się spodziewać, jeśli skorzystamy z kilku istniejących bibliotek. Na koniec tworzenia tego responsywnego widoku, wynik będzie wyglądał następująco:
Co więcej, użytkownik będzie mógł powiększyć mapę do bardzo szczegółowego poziomu, aby zobaczyć najbliższy Walmart, jak pokazano na poniższym obrazku:
Kod dla widoku internetowego aplikacji wykorzystuje właściwości długości i szerokości geograficznej, które zdefiniowaliśmy w naszym obiekcie modelu i zaimportowaliśmy do bazy danych. Wykorzystamy również popularną bibliotekę Leaflet do tworzenia mapy i umieszczania na niej pinezek, czyli znaczników.
Aby utworzyć tę mapę, utwórz nowy plik w katalogu publicznym o nazwie locatewalmart.html
i dodaj następujący kod JavaScript:
<!doctype html><html lang="en"><head> <title>Walmart Stores</title> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.css" /><!--> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.ie.css" /><!--><script src="https://code.jquery.com/jquery-2.0.0.min.js"></script><link href='http://fonts.googleapis.com/css?family=oswald' rel='stylesheet' type='text/css'><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><style type="text/css">body { padding: 0; margin: 0;}html, body, #map { height: 100%; font-family: 'oswald';}.leaflet-container .leaflet-control-zoom { margin-left: 13px; margin-top: 70px;}#map { z-index: 1;}#title { z-index: 2; position: absolute; left: 10px; }</style></head><body><h1>Walmart Stores</h1><div></div><script src="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.js"></script><script>center = new L.LatLng(39.83, -98.58);zoom = 5;var map = L.map('map').setView(center, zoom);var markerLayerGroup = L.layerGroup().addTo(map);L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {maxZoom: 18,attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'}).addTo(map);function getPins(e){url = "http://0.0.0.0:3000/api/stores";$.get(url, pinTheMap, "json")}function pinTheMap(data){//clear the current pinsmap.removeLayer(markerLayerGroup);//add the new pinsvar markerArray = ;var lastNumber = 0;for (var i = 0; i < data.length; i++){store = data;if(store.latitude.length > 0 && store.longitude.length>0) {markerArray.push(L.marker());}}markerLayerGroup = L.layerGroup(markerArray).addTo(map);}map.whenReady(getPins)</script></body></html>
Jak widać, kod ten to po prostu standardowy HTML i JavaScript. Interesującą częścią jest funkcja getPins(e), w której wykonujemy połączenie REST do API, które stworzyliśmy wcześniej w tym wpisie. Następnie wykonujemy iterację po każdym sklepie i tworzymy pinezkę z podaniem szerokości i długości geograficznej każdego sklepu. Całkiem fajne, prawda?
Podsumowanie##
W tym wpisie pokazałem jak stworzyć usługę internetową opartą na REST, która zwraca listę sklepów Walmart w Stanach Zjednoczonych. Po utworzeniu usługi webowej przy użyciu Loopback, dodaliśmy front-endową reprezentację danych. Przy bardzo niewielkim nakładzie pracy, byliśmy w stanie stworzyć w pełni działającą aplikację znacznie szybciej niż ktoś mógłby to zrobić używając swojego obecnego języka. Omówiliśmy również niektóre podobieństwa pomiędzy Node.js i PHP. Chociaż nadal uważam PHP za świetny język, osobiście stwierdziłem, że Node.js jest świetnym kolejnym językiem do nauki, biorąc pod uwagę bogaty ekosystem bibliotek i szybkość, z jaką jestem w stanie tworzyć aplikacje.
Załączyłem szybką tabelę, do której możesz się odnieść podczas porównywania Node.js z PHP.
Cechy |
PHP |
Node.js |
Świetne IDE |
Tak, wielokrotny wybór z IntelliJ, Zend Studio, Netbeans, itp |
Tak, wielokrotny wybór w tym Eclipse, Visual Studio, Codenvy, etc |
Zarządzanie zależnościami |
Composer, PEAR |
NPM |
Enterprise Ready |
Tak |
Tak |
Duży ekosystem bibliotek |
Tak, ale czasami trudno je znaleźć |
Tak |
Wspólne frameworki |
CodeIgniter, CakePHP, Laravel, etc |
Express, Meteor, etc |
Obsługa baz danych |
Tak |
Tak |
Non-nie blokujące IO |
Nie |
Tak |
Testowanie Tak |
Tak |
Tak |
Aplikacje czasu rzeczywistegoaplikacje czasu rzeczywistego |
Tak, z dodatkowymi procesami takimi jak Apache WebSocket itp. |
Tak |
Wbudowany serwer WWW |
Nie, większość ludzi używa w połączeniu z Apache |
Tak |
- Gotowy do tworzenia interfejsów API w Node.js i podłączyć je do swoich danych? Sprawdź framework Node.js LoopBack. Ułatwiliśmy rozpoczęcie pracy lokalnie lub w ulubionej chmurze, dzięki prostej instalacji npm.
.