Programování

Node.js vs. PHP: Epická bitva o vývojářské myšlení

Je to klasický hollywoodský příběh: bitva mezi dvěma starými přáteli, kteří šli každý jiným způsobem. Tření často začíná, když jeden kamarád vzbudí zájem o nevyslovenou doménu druhého kamaráda. Ve verzi tohoto filmu v programovacím jazyce je to zavedení Node.js, které promění kamarádův pohyb v nevraživou shodu: PHP a JavaScript, dva partneři, kteří kdysi společně vládli internetu, ale nyní to chtějí pro podíl vývojářů.

Za starých časů bylo partnerství jednoduché. JavaScript zpracoval malé podrobnosti v prohlížeči, zatímco PHP spravovalo všechny úkoly na straně serveru mezi portem 80 a MySQL. Byla to šťastná unie, která nadále podporuje mnoho důležitých částí internetu. Mezi WordPressem, Drupalem a Facebookem mohou lidé stěží projít minutu na webu, aniž by narazili na PHP.

Pak nějaké chytré dítě zjistilo, že může na serveru spustit JavaScript. Náhle nebylo nutné používat PHP k sestavení nové generace serverových zásobníků. K vytvoření Node.js a frameworků běžících na klientovi stačil jeden jazyk. „JavaScript všude“ se pro některé stal mantrou.

Od tohoto objevu explodoval JavaScript. Vývojáři Node.js si nyní mohou vybrat mezi neustále se rozšiřující kolekcí vynikajících frameworků a lešení: React, Vue, Express, Angular, Meteor a další. Seznam je dlouhý a největším problémem je výběr mezi vynikajícími možnostmi.

Někteří se dívají na boom v Node.js jako na důkaz, že JavaScript rozhodně vyhrává, a existuje spousta nezpracovaných dat, která tento pohled podpoří. GitHub uvádí, že JavaScript je nejoblíbenějším jazykem ve své sbírce úložišť, a rychle se rozrůstá i líbající se bratranec JavaScriptu TypeScript. Mnoho z nejlepších projektů je napsáno v JavaScriptu a odkazuje na ně mnoho nejpopulárnějších hashtagů. PHP mezitím v tomto žebříčku sklouzlo ze třetího místa na čtvrté a pravděpodobně pokleslo ještě více v počtu tiskových zpráv, zavádění produktů a dalších momentů na trhu.

Ale humbuk mizí a software může žít po desetiletí. Většina základny kódu PHP nebude migrovat a nadále bude poskytovat velké části textu, který čteme každý den. Podle některých odhadů 40 procent stránek, které prohlížíme, začíná v nějaké formě s PHP. Součástí toho je to, že se PHP stále znovu rodí. V posledních několika letech byly útroby systémů se systémem PHP zcela přepsány. Není to stejný kód PHP, který provozoval web vašeho prarodiče.

Zippy, kompilátor just-in-time PHP přináší odpovědi rychleji než kdy dříve díky stejným chytrým technikám, které poháněly revoluci Node.js. Nyní PHP 7.2 a HHVM nabízejí mnoho stejných chytrých optimalizací za běhu, které V8 přinesla pro Chrome a Node.js. Nejen to, ale HHVM má Hack, chytrý dialekt PHP, který nabízí plnou podporu pro sofistikované programovací funkce, jako jsou lambdas, generika a sbírky. Pokud tedy tyto funkce potřebujete, nemusíte hledat komplexnější zásobník.

Konec samozřejmě ještě není napsán. Na každého kodéra, který kvílí o čistotě a mladosti Node.js a jednoduchosti JavaScriptu všude, je tu další, který je spokojen s hlubokou základnou kódu a dlouho pochopenou stabilitou PHP. Porazí starý kodér zpáteční server na straně serveru? Svrhne JavaScript svého starého přítele, aby dosáhl světové nadvlády? Vložte další dávku popcornu do mikrovlnky a posaďte se.

Kde zvítězí PHP: Míchání kódu s obsahem

Píšete spolu, naléváte myšlenky do textu pro svůj web a chcete do procesu přidat větev, malé prohlášení if-then, aby to vypadalo hezky, řekněme, v závislosti na nějakém parametru v URL. Nebo možná chcete kombinovat text nebo data z databáze. S PHP otevřete magické tagy PHP a začnete psát kód během několika sekund. Není třeba šablon - vše je šablona! Není třeba žádných dalších souborů ani komplikovaných architektur, pouze programovatelná logistická síla na dosah ruky.

Kde Node vyhrává: Oddělující obavy

Míchání kódu s obsahem je berlou, která vás může nakonec ochromit. Jistě, je zábavné kombinovat kód s HTML při prvních dvou nebo třech pokusech. Ale brzy se z vaší kódové základny stane zamotaný nepořádek logiky. Skuteční programátoři přidávají strukturu a oddělují kosmetickou vrstvu od logické vrstvy. Pro nové programátory je čistší, aby je pochopili, a snadněji se udržují. Rámec běžící na Node.js jsou vytvářeny programátory, kteří vědí, že život je lepší, když jsou model, pohled a ovladač oddělené.

Kde zvítězí PHP: Hluboká kódová základna

Web je naplněn kódem PHP. Nejoblíbenější platformy pro vytváření webů (WordPress, Drupal, Joomla) jsou napsány v PHP. Platformy jsou nejen otevřené, ale také většina jejich pluginů. Všude je kód PHP a čeká na jeho stažení, úpravy a použití pro vaše potřeby.

Kde zvítězí uzel: Modernější funkce

Jistě, existují tisíce skvělých souborů PHP s otevřeným zdrojovým kódem, ale některé jsou 12leté zásuvné moduly WordPress, které doufají a modlí se, aby si je někdo stáhl. Pro každou moderní verzi Symfony existuje zaprášená, dávno zapomenutá knihovna, kterou nikdo neaktualizuje.

Kdo chce trávit hodiny, dny nebo týdny opičením pomocí kódu, který nebyl roky aktualizován? Pluginy Node.js jsou nejen novější, ale byly vytvořeny s plnou znalostí nejnovějších architektonických přístupů. Byly vytvořeny programátory, kteří chápou, že moderní webové aplikace by měly klientovi posílat většinu informací.

A zatímco JavaScript má mnoho malých výstředností, které poblázňují, z větší části je to moderní jazyk, který sportuje moderní syntaxi a několik užitečných funkcí, jako jsou závěry. Můžete jej snadno překonfigurovat a rozšířit, což umožňuje výkonné knihovny jako jQuery. Můžete předávat funkce jako objekty. Proč se omezovat?

Kde zvítězí PHP: Jednoduchost (trochu)

V PHP toho není moc: několik proměnných a základních funkcí pro žonglování řetězců a čísel. Je to tenká vrstva, která toho moc nedělá, kromě přesunu dat z portu 80 do databáze a zpět. To je to, co má dělat. Moderní databáze je kouzelný nástroj a má smysl nechat na ni těžké zvedání. PHP je správné množství složitosti pro práci, která by neměla být složitá.

Na druhou stranu, pokud jste programátor, který chce dělat více než pracovat s databází a formátovat výsledky, můžete nyní s PHP dělat více, aniž byste se drželi za nos. HHVM společnosti Facebook přidává podporu pro Hack, kompletní jazyk plný moderních funkcí, jako jsou anotace typů, generika a výrazy lambda. Použití tohoto omezení omezuje váš kód na provoz pouze na HHVM, ale to není nejhorší věc na světě. Je to velmi rychlé.

Kde uzel vyhrává: Desítky jazykových možností

Pokud jsou uživatelé PHP rádi, že získají přístup k hacku, měli by zvážit přesun do světa Node.js, protože mnoho hlavních jazyků může být překompilováno pro spuštění v JavaScriptu. Existují známé možnosti jako Java, C # nebo Lisp a desítky dalších, jako je Scala, OCaml a Haskell. K dispozici jsou dokonce i dárky pro nostalgické milovníky BASIC nebo Pascal. Tento seznam jazyků, které se kompilují do JavaScriptu od Jeremyho Ashkenase, je poměrně obsáhlý. Plus bratranci v jazyce JavaScript, jako jsou TypeScript a CoffeeScript, nabízejí mírně odlišné a vylepšené přístupy ke stejné hře.

Kde zvítězí PHP: Není potřeba žádná klientská aplikace

Všechny rozhovory o používání stejného jazyka v prohlížeči a na serveru jsou hezké, ale co když v prohlížeči nemusíte používat žádný jazyk? Co když dodáváte data ve formě HTML? Co když stavíte sparťanský statický web, který vám dodá přesně to, co je potřeba, bez interaktivního blingu? Prohlížeč to zobrazí a nedochází k žádným bolestem hlavy nebo závadám způsobeným vynecháním podprocesů JavaScriptu, které se pokoušejí vytvořit stránku v prohlížeči ze dvou desítek volání webových služeb. Čisté HTML funguje častěji než cokoli jiného a pro jeho vytvoření je optimalizováno PHP. Proč se obtěžovat s JavaScriptem v prohlížeči? Vytvořte vše na serveru a vyhněte se přetížení malého prohlížeče v malém telefonu.

Kde uzel vyhrává: Servisní volání jsou tenčí než volání PHP s tlustým HTML

Zatímco webové aplikace AJAX-crazy HTML5 mohou mít příliš mnoho pohyblivých částí, jsou skvělé - a velmi efektivní. Jakmile je kód JavaScript v mezipaměti prohlížeče, jedinou věcí, která se pohybuje po drátech, jsou nová data. Neexistuje spousta značek HTML a neexistují žádné opakované cesty ke stažení celé stránky. Změnily se pouze údaje. Pokud jste ochotni věnovat čas vytvoření úhledné webové aplikace na straně prohlížeče, je tu velká výplata. Node.js je optimalizován tak, aby poskytoval data a pouze data prostřednictvím webových služeb. Pokud je vaše aplikace složitá a bohatá na data, je to dobrý základ pro efektivní doručování.

Kde zvítězí PHP: SQL

PHP bylo vytvořeno tak, aby koexistovalo s MySQL a jeho mnoha variantami, jako je MariaDB. Pokud MySQL není úplně v pořádku, existují další skvělé databáze SQL od společností Oracle a Microsoft. Váš kód lze přepnout s několika změnami vašich dotazů. Obrovský svět SQL nekončí na svých hranicích. Některé z nejstabilnějších a nejlépe vyvinutých kódů budou propojeny s databází SQL, což znamená, že veškerou tuto sílu lze také snadno integrovat do projektu PHP. Možná to není jedna dokonalá šťastná rodina, ale je to velká. Nejen to, ale svět databází se pomalu zlepšuje, protože vývojáři nacházejí způsoby, jak do databáze přidat další inteligenci, takže nemusíte tak tvrdě pracovat.

Kde zvítězí Node.js: JSON

Pokud musíte mít přístup k SQL, má Node.js k tomu knihovny. Ale Node.js také mluví JSON, lingua franca pro interakci s mnoha nejnovějšími databázemi NoSQL. To neznamená, že pro svůj zásobník PHP nemůžete získat knihovny JSON, ale v jednoduchosti práce s JSON při použití JavaScriptu je něco plynulého. Je to jedna syntaxe od prohlížeče přes webový server po databázi. Dvojtečky a složené závorky fungují všude stejně. To samo vás zachrání před hodinami frustrace.

Kde zvítězí PHP: Rychlost kódování

Pro většinu vývojářů je psaní PHP pro webové aplikace rychlejší: žádné kompilátory, žádné nasazení, žádné soubory JAR nebo preprocesory - jednoduše váš oblíbený editor a některé soubory PHP v adresáři. Váš počet najetých kilometrů se bude lišit, ale pokud jde o rychlé narušení projektu, je PHP dobrým nástrojem.

Kde zvítězí Node.js: Rychlost aplikace

Psaní kódu JavaScript je o něco těžší, když počítáte složené závorky a závorky, ale až bude hotový, váš kód Node.js může létat. Mechanismus zpětného volání je skvělý, protože vám ušetří žonglování s vlákny. Jádro je dobře postavené a navržené tak, aby za vás udělalo vše. Není to to, co každý chce?

Kde zvítězí PHP: Soutěž

Boj o srdce a mysl vývojářů PHP se stále odehrává. Tým HHVM a tým Zend tvrdě pracují na dodání rychlého kódu pro všechny. Objevují se nezávislá měřítka a každý posouvá základy kódu na maximum. To znamená pouze lepší výkon.

Kde zvítězí Node.js: Solidarita

Opravdu chcete dvě různé kódové základny? Jistě, konkurence pomáhá, ale brzy dojde k fragmentaci. Co se stane, když váš kód běží pouze na jednom ze dvou? Konkurence nepřináší nic dobrého, pokud musíte přepracováním kódu strávit týdny nebo měsíce. Zatímco Node.js před několika lety zažil své vlastní štěpení, se spuštěním io.js se vesmír Node.js od té doby znovu spojil a dal mu takovou jazykovou solidaritu, po které vývojáři PHP brzy touží.

Kde zvítězí PHP: Základní aplikace

V posledních několika letech spustilo několik vývojářů webové aplikace a zjistilo, že jsou frustrovaní pomalým chováním. JavaScript, který pohání všechny tyto pohyblivé části, může být desítky tisíc bajtů, někdy stovky tisíc. Když dorazí všechny pakety, musí být analyzovány, zkompilovány a nakonec provedeny - všechny, aby doručily několik bajtů, jako je teplota a předpověď.

Odpor proti tomuto rokokovému šílenství lze najít v týmech vytvářejících statické generátory webů (463 v tomto psaní) a ořezaných webových stránkách ve formátu AMP. PHP je přirozenou volbou pro každý tým, který chce soustředit inteligenci na server, aby klient nebyl přetížen.

Kde zvítězí Node.js: Bohatství

Ludwig Mies van der Rohe, architekt budov, kdysi řekl: „Méně je více.“ Robert Venturi, další architekt, přišel a odpověděl: "Méně je nuda." Smartphony mají více energie než místnost plná počítačů Cray. Stolní počítače mají grafické karty s více ventilátory, které je během celého zpracování udrží v chladu. Proč bychom měli svléknout náš kód a žít jako oběť z doby deprese v Steinbeckově románu? Žijte to. Velké, úhledné weby plné kódu JavaScript jsou poutavé, dramatické a hlavně zábavné. Jistě je to tak obscénní plýtvat tak velkou šířkou pásma na pár bitů dat, ale šířka pásma nikdy nebyla levnější. Žij trochu!

Kde oba vyhrávají: Bezhlavý

Slovo „bez hlavy“ označuje kód PHP spuštěný na serveru. Nedávno některé z nejlepších aplikací PHP, jako je Drupal, nahlédly přes uličku a odcházely ohromeny sofistikovanými uživatelskými rozhraními vytvořenými rámci JavaScriptu jako React, Angular nebo Vue. Místo toho, aby se jim snažili konkurovat, vzdávají se kontroly nad klientem a soustředí se na dobrou práci s back-endem na serveru.

Pokud jste dost investovali do kódu PHP běžícího na serveru, může to být způsob, jak si užít to nejlepší z obou přístupů. Starý zavedený kód PHP funguje jako přední brána do databáze, která dvakrát zkontroluje požadavky, vyčistí data a obecně poskytuje veškerou obchodní logiku. Na straně klienta je progresivní webová aplikace napsaná pomocí nejnovějšího rámce JavaScriptu. Když potřebuje informace, odešle požadavek AJAX do kódu PHP.

To nemusí mít smysl pro někoho, kdo začíná od nuly, ale pokud jste roky spoléhali na PHP a chcete postupovat kupředu, může to být šťastný kompromis.

Kde vyhrávají oba: Microservices a bez serveru

Rostoucí mikroslužba nebo paradigmata bez serveru nabízejí způsob, jak mohou JavaScript a PHP kód spolužit server a vycházet. Obě řešení rozdělují práci na desítky menších služeb nebo funkcí a tyto mohou běžet nezávisle a zůstat ve svých pruzích. Některé části, obvykle starší a nejstabilnější části aplikace, mohou používat PHP. Ostatní části, často novější, budou napsány v Node.js. Jazyk POŠTA nebo DOSTAT může být lingua franca, která je všechny spojuje.

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