Programovanie

Node.js vs. PHP: Epická bitka o vývojársky mindshare

Je to klasický hollywoodsky dej: bitka medzi dvoma starými priateľmi, ktorí išli každý inou cestou. Trenie často začína, keď jeden priateľ vyvolá záujem o to, čo bolo vždy nevyslovenou doménou druhého priateľa. Vo verzii tohto filmu s programovacím jazykom predstavuje zavedenie jazyka Node.js, ktorý premení kamarátsky pohyb na nevraživú zhodu: PHP a JavaScript, dvaja partneri, ktorí kedysi spolu vládli internetu, ale teraz to majú na svedomí vývojári.

Za starých čias bolo partnerstvo jednoduché. JavaScript pracoval s malými podrobnosťami o prehliadači, zatiaľ čo PHP spravovalo všetky úlohy na strane servera medzi portom 80 a MySQL. Bola to šťastná únia, ktorá naďalej podporuje mnoho dôležitých častí internetu. Medzi programami WordPress, Drupal a Facebook môžu ľudia len ťažko prejsť minútu na webe bez toho, aby narazili na PHP.

Potom nejaké šikovné dieťa zistilo, že môže na serveri spustiť JavaScript. Zrazu nebolo treba používať PHP na zostavenie novej generácie serverových stohov. Na vytvorenie Node.js a rámcov bežiacich na klientovi stačil jeden jazyk. „JavaScript všade“ sa pre niektorých stal mantrou.

Od tohto objavu explodoval JavaScript. Vývojári v Node.js si teraz môžu vybrať medzi neustále sa rozširujúcou kolekciou vynikajúcich rámcov a lešení: React, Vue, Express, Angular, Meteor a ďalšie. Zoznam je dlhý a najväčším problémom je výber medzi vynikajúcimi možnosťami.

Niektorí sa pozerajú na boom v Node.js ako na dôkaz, že jazyk JavaScript rozhodujúco vyhráva, a existuje veľa nespracovaných údajov, ktoré tento názor podporia. GitHub uvádza, že JavaScript je najpopulárnejším jazykom v zbierke archívov a rýchlo sa rozrastá aj bozkávajúci sa bratranec JavaScriptu TypeScript. Mnoho z najlepších projektov je napísaných v JavaScripte a odkazuje sa na ne veľa najpopulárnejších hashtagov. Medzitým sa PHP v tomto rebríčku prepadlo z tretieho miesta na štvrté a pravdepodobne sa prepadlo ešte viac v počte tlačových správ, zavádzaní produktov a ďalších silne predávaných momentov.

Ale humbuk mizne a softvér môže žiť desaťročia. Väčšina základne kódov PHP nebude migrovať a naďalej bude poskytovať veľkú časť textu, ktorý čítame každý deň. Podľa niektorých odhadov 40 percent stránok, ktoré si prezeráme, začína v určitej podobe s PHP. Súčasťou toho je aj to, že sa PHP stále znovu rodí. V posledných niekoľkých rokoch sa útroby systémov so systémom PHP úplne prepísali. Nie je to ten istý kód PHP, ktorý používal web vášho starého rodiča.

Komprimovaný kompilátor PHP v reálnom čase poskytuje odpovede rýchlejšie ako kedykoľvek predtým vďaka rovnakým inteligentným technikám, ktoré poháňali revolúciu Node.js. Teraz PHP 7.2 a HHVM ponúkajú veľa rovnakých chytrých optimalizácií za chodu, ktoré priniesla verzia V8 pre prehliadače Chrome a Node.js. Nielen to, ale HHVM má Hack, šikovný dialekt PHP, ktorý ponúka úplnú podporu pre sofistikované programovacie funkcie, ako sú lambdas, generiká a zbierky. Ak teda tieto funkcie potrebujete, nemusíte hľadať kompletnejší zásobník.

Koniec samozrejme ešte nie je napísaný. Na každého kodéra, ktorý krikkuje o čistote a mladosti Node.js a jednoduchosti JavaScriptu všade, je tu ďalší, ktorý je spokojný s hlbokou základňou kódu a dlho pochopenou stabilitou PHP. Porazí starý programátor povýšený serverový server? Zvrhne JavaScript svojho starého priateľa, aby dosiahol svetovládu? Vložte ďalšiu dávku popcornu do mikrovlnnej rúry a pohodlne sa usaďte.

Kde zvíťazí PHP: Miešanie kódu s obsahom

Píšete spolu a vylievate myšlienky do textu svojej webovej stránky. Chcete do procesu pridať vetvu, malé vyhlásenie typu „if-then“, aby to vyzeralo pekne, povedzme, v závislosti od niektorých parametrov v adrese URL. Alebo možno chcete zmiešať text alebo údaje z databázy. S PHP otvoríte čarovné PHP tagy a začnete písať kód behom niekoľkých sekúnd. Nie sú potrebné šablóny - všetko je šablóna! Nie sú potrebné žiadne ďalšie súbory ani zložité architektúry, iba programovateľná logistická sila na dosah ruky.

Kde zvíťazí uzol: Oddelenie obáv

Miešanie kódu s obsahom je barlou, ktorá vás môže nakoniec ochromiť. Iste, je zábavné miešať kód s HTML pri prvých dvoch alebo troch pokusoch. Ale čoskoro sa z vašej kódovej základne stane zamotaný neporiadok logiky. Skutoční programátori pridávajú štruktúru a oddeľujú kozmetickú vrstvu od logickej. Pre nových programátorov je to čistejšie a ľahšie sa s nimi udržuje. Rámec bežiaci na Node.js vytvárajú programátori, ktorí vedia, že život je lepší, keď sú model, pohľad a ovládač oddelené.

Kde zvíťazí PHP: Hlboká kódová základňa

Web je plný kódu PHP. Najobľúbenejšie platformy na vytváranie webových stránok (WordPress, Drupal, Joomla) sú napísané v jazyku PHP. Platformy sú nielen otvorené, ale aj väčšina ich doplnkov. Všade je kód PHP a čaká na stiahnutie, úpravu a použitie pre vaše potreby.

Kde víťazí uzol: Modernejšie funkcie

Iste, existujú tisíce skvelých súborov PHP s otvoreným zdrojom, ale niektoré sú 12-ročné doplnky WordPress, ktoré dúfajú a modlia sa, aby si ich niekto stiahol. Pre každú modernú verziu Symfony existuje zaprášená a dávno zabudnutá knižnica, ktorú nikto neaktualizuje.

Kto chce tráviť hodiny, dni alebo týždne opičením pomocou kódu, ktorý nebol roky aktualizovaný? Doplnky Node.js sú nielen novšie, ale boli postavené s úplnou znalosťou najnovších architektonických prístupov. Vytvorili ich programátori, ktorí chápu, že moderné webové aplikácie by mali tlačiť väčšinu inteligencie do klienta.

A aj keď má JavaScript veľa malých zvláštností, ktoré niektorých privádzajú do šialenstva, vo väčšine prípadov ide o moderný jazyk, ktorý obsahuje modernú syntax a niekoľko užitočných funkcií, ako sú napríklad uzávery. Môžete ich ľahko prekonfigurovať a rozšíriť, čo umožňuje výkonné knižnice ako jQuery. Môžete prenášať funkcie ako okolo objektov. Prečo sa obmedzovať?

Kde zvíťazí PHP: Jednoduchosť (trochu)

V PHP toho nie je veľa: niekoľko premenných a základné funkcie na žonglovanie s reťazcami a číslami. Je to tenká vrstva, ktorá nerobí veľa, okrem presunu údajov z portu 80 do databázy a späť. To je to, čo má robiť. Moderná databáza je čarovný nástroj a má zmysel nechať na ňu ťažké zdvíhanie. PHP je správne množstvo zložitosti pre prácu, ktorá nemá byť zložitá.

Na druhej strane, ak ste programátor, ktorý sa chce viac venovať práci s databázou a formátovaniu výsledkov, môžete teraz v PHP robiť viac bez toho, aby ste chytili nos. HHVM spoločnosti Facebook pridáva podporu pre Hack, kompletný jazyk plný moderných funkcií, ako sú anotácie typov, všeobecné výrazy a výrazy lambda. Použitie tohto obmedzenia obmedzuje váš kód tak, aby bežal iba na HHVM, ale to nie je najhoršia vec na svete. Je to veľmi rýchle.

Kde víťazí uzol: Desiatky jazykových možností

Ak sú používatelia PHP radi, že majú prístup k hacku, mali by zvážiť presun do sveta Node.js, pretože mnoho hlavných jazykov je možné skompilovať na spustenie v JavaScripte. Existujú známe možnosti ako Java, C # alebo Lisp a ďalšie desiatky ako Scala, OCaml a Haskell. Nechýbajú ani darčeky pre nostalgických milovníkov BASIC alebo Pascal. Tento zoznam jazykov, ktoré sa kompilujú do JavaScriptu od Jeremyho Ashkenasa, je pomerne obsiahly. Plus bratranci z jazyka JavaScript, ako sú TypeScript a CoffeeScript, ponúkajú mierne odlišné a vylepšené prístupy k tej istej hre.

Kde zvíťazí PHP: Nie je potrebná žiadna klientská aplikácia

Všetky rozhovory o používaní rovnakého jazyka v prehliadači a na serveri sú pekné, ale čo ak v prehliadači nemusíte používať žiadny jazyk? Čo ak dodáte údaje vo formáte HTML? Čo ak vytvárate sparťanský statický web, ktorý vám dodá presne to, čo je potrebné, bez interaktívneho prepojenia? Prehliadač ho otvorí a nevyskytujú sa žiadne bolesti hlavy alebo závady spôsobené vynechaním vlákna JavaScriptu, ktoré sa pokúša vytvoriť stránku v prehliadači z dvoch desiatok volaní webových služieb. Čisté HTML funguje častejšie ako čokoľvek iné a na jeho vytvorenie je optimalizované PHP. Prečo sa obťažovať s JavaScriptom v prehliadači? Vytvorte všetko na serveri a zabráňte preťaženiu malého prehliadača na malom telefóne.

Kde zvíťazí uzol: Servisné hovory sú tenšie ako hovory PHP s tučným písmom HTML

Aj keď môžu webové aplikácie AJAX-crazy HTML5 obsahovať príliš veľa pohyblivých častí, sú super a veľmi efektívne. Len čo je kód JavaScript v medzipamäti prehliadača, po drôtoch sa budú pohybovať iba nové údaje. Nie je tu veľa značiek HTML a neexistujú žiadne opakované cesty na stiahnutie celej stránky. Zmenili sa iba údaje. Ak ste ochotní venovať čas vytvoreniu úhľadnej webovej aplikácie na strane prehliadača, je to veľká odmena. Node.js je optimalizovaný na poskytovanie údajov a iba údajov prostredníctvom webových služieb. Ak je vaša aplikácia zložitá a bohatá na dáta, je to dobrý základ pre efektívne doručenie.

Kde zvíťazí PHP: SQL

PHP bolo postavené tak, aby koexistovalo s MySQL a jeho mnohými variantmi, napríklad MariaDB. Ak MySQL nie je úplne v poriadku, existujú ďalšie vynikajúce databázy SQL od spoločností Oracle a Microsoft. Váš kód je možné prepnúť pomocou niekoľkých zmien v dotazoch. Rozsiahly svet SQL nekončí na svojich hraniciach. Niektoré z najstabilnejších a dobre vyvinutých kódov budú prepojené s databázou SQL, čo znamená, že všetku túto moc je možné ľahko integrovať do projektu PHP. Možno to nie je jedna dokonalá a šťastná rodina, ale je to veľká rodina. Nielen to, ale svet databáz sa pomaly zlepšuje, pretože vývojári nachádzajú spôsoby, ako pridať do databázy viac inteligencie, takže nemusíte tak tvrdo pracovať.

Kde zvíťazí Node.js: JSON

Ak musíte mať prístup k SQL, Node.js má na to knižnice. Node.js však hovorí aj JSON, jazykom lingua franca pre interakciu s mnohými najnovšími databázami NoSQL. To neznamená, že nemôžete získať knižnice JSON pre svoj zásobník PHP, ale v jednoduchosti práce so súborom JSON pri použití JavaScriptu je niečo plynulého. Je to jedna syntax z prehliadača na webový server do databázy. Dvojbodky a kučeravé zátvorky fungujú všade rovnako. Iba to vás ušetrí od hodín frustrácie.

Kde zvíťazí PHP: rýchlosť kódovania

Pre väčšinu vývojárov je písanie PHP pre webové aplikácie rýchlejšie: žiadne kompilátory, žiadne nasadenie, žiadne súbory JAR alebo preprocesory - jednoducho váš obľúbený editor a niektoré súbory PHP v adresári. Váš počet najazdených kilometrov sa bude líšiť, ale pokiaľ ide o rýchle búchanie projektu, je dobrým nástrojom použitie PHP.

Kde zvíťazí Node.js: rýchlosť aplikácie

Písanie kódu JavaScript je o niečo ťažšie, keď počítate zložené zátvorky a zátvorky, ale až bude hotový, váš kód Node.js môže lietať. Mechanizmus spätného volania je vynikajúci, pretože vám ušetrí žonglovanie s vláknami. Jadro je dobre postavené a navrhnuté tak, aby robilo všetko za vás. Nie je to to, čo chcú všetci?

Kde zvíťazí PHP: Konkurencia

Boj o srdcia a mysle vývojárov PHP sa stále odvíja. Tím HHVM a tím Zend tvrdo pracujú na dodaní rýchleho kódu pre všetkých. Objavujú sa nezávislé referenčné hodnoty a všetci tlačia databázové základy na maximum. To znamená iba lepší výkon.

Kde zvíťazí Node.js: Solidarita

Naozaj chcete dve rôzne kódové základne? Iste, konkurencia pomáha, ale čoskoro dôjde k fragmentácii. Čo sa stane, keď sa váš kód spustí iba na jednom z týchto dvoch kódov? Konkurencia neprináša úžitok, ak musíte prepisovaním kódu tráviť týždne alebo mesiace. Zatiaľ čo Node.js zažil svoje vlastné štiepenie pred niekoľkými rokmi, spustením io.js sa vesmír Node.js odvtedy znovu spojil a dal mu takú jazykovú solidaritu, po ktorej vývojári PHP môžu čoskoro túžiť.

Kde zvíťazí PHP: Základné aplikácie

Za posledných pár rokov začalo niekoľko vývojárov s spustením webových aplikácií, ktoré boli frustrujúce z pomalého správania. JavaScript, ktorý poháňa všetky tieto pohyblivé časti, môže byť desaťtisíce bajtov, niekedy státisíce. Keď prídu všetky pakety, musia sa analyzovať, kompilovať a nakoniec vykonať - všetky, aby doručili niekoľko bajtov, napríklad teplotu a predpoveď.

Odpor proti tomuto rokokovému šialenstvu možno nájsť v tímoch budujúcich statické generátory webov (463 v tomto písaní) a orezaných webových stránkach vo formáte AMP. PHP je prirodzenou voľbou pre každý tím, ktorý chce sústrediť inteligenciu na server, aby nebol klient preťažený.

Kde zvíťazí Node.js: Bohatosť

Ludwig Mies van der Rohe, architekt budov, raz povedal: „Menej je viac.“ Robert Venturi, ďalší architekt, prišiel a odpovedal: „Menej je nuda.“ Smartfóny majú viac energie ako miestnosť plná počítačov Cray. Stolné počítače majú grafické karty s viacerými ventilátormi, ktoré ich počas celého spracovania ochladzujú. Prečo by sme mali vyzliecť náš kód a žiť ako obeť z obdobia depresie v Steinbeckovom románe? Ži to. Veľké, úhľadné webové stránky plné kódu JavaScript sú príťažlivé, dramatické a hlavne zábavné. Iste, je to také obscénne plytvať tak veľkou šírkou pásma na pár bitov dát, ale šírka pásma nikdy nebola lacnejšia. Žite trochu!

Kde obaja zvíťazia: Bezhlavý

Slovo „headless“ označuje kód PHP bežiaci na serveri. Niektoré z najlepších aplikácií PHP, ako je Drupal, nedávno nahliadli cez uličku a ohromené prepracovanými používateľskými rozhraniami vytvorenými rámcami JavaScriptu ako React, Angular alebo Vue odchádzajú preč. Namiesto toho, aby im konkurovali, vzdávajú sa kontroly nad klientom a sústreďujú sa na odvádzanie dobrej práce so serverom typu back-end.

Ak ste dosť investovali do kódu PHP bežiaceho na serveri, môže to byť spôsob, ako si vychutnať to najlepšie z oboch prístupov. Starý zavedený kód PHP slúži ako vstupná brána do databázy, ktorá dvakrát kontroluje požiadavky, čistí údaje a všeobecne poskytuje všetku obchodnú logiku. Na strane klienta je progresívna webová aplikácia napísaná v najnovšom rámci JavaScriptu. Keď potrebuje informácie, odošle požiadavku AJAX do kódu PHP.

To nemusí mať zmysel pre niekoho, kto začína od nuly, ale ak ste sa roky spoliehali na PHP a chcete napredovať postupne, môže to byť šťastný kompromis.

Kde vyhrávajú obaja: mikroslužby a bez serverov

Rastúce mikroslužby alebo paradigmy bez servera ponúkajú spôsob, ako môžu kód JavaScript a PHP spolunažívať server a vychádzať s nimi. Obe riešenia rozdelili prácu na desiatky menších služieb alebo funkcií a tieto môžu bežať nezávisle a zostať vo svojich pruhoch. Niektoré časti, zvyčajne staršia a najstabilnejšia časť aplikácie, môžu pracovať s PHP. Ostatné časti, často tie novšie, budú napísané v Node.js. Jazyk POST alebo ZÍSKAJTE môže byť lingua franca, ktorá ich spája všetkých.

$config[zx-auto] not found$config[zx-overlay] not found