Programiranje

Node.js v primerjavi s PHP: epska bitka za razvijalčevo miselnost

Gre za klasičen hollywoodski zaplet: bitka med dvema starima prijateljicama, ki sta šla ločeno. Trenje se pogosto začne, ko en prijatelj vzbudi zanimanje za tisto, kar je bilo vedno neizrečena domena drugega prijatelja. V programski jezikovni različici tega filma je uvedba Node.js, ki pretvori prijateljski tek v nezadovoljstvo: PHP in JavaScript, dva partnerja, ki sta nekoč skupaj vladala internetu, zdaj pa ga je razvila za razumni delež razvijalcev.

V starih časih je bilo partnerstvo preprosto. JavaScript je v brskalniku obdeloval majhne podrobnosti, medtem ko je PHP upravljal vsa strežniška opravila med vrati 80 in MySQL. Bila je srečna zveza, ki še naprej podpira številne ključne dele interneta. Med WordPressom, Drupalom in Facebookom se ljudje težko znajdejo niti na spletu, ne da bi naleteli na PHP.

Nato je neki pameten otrok odkril, da lahko na strežniku zažene JavaScript. Naenkrat ni bilo treba uporabiti PHP za izdelavo naslednje generacije strežniških skladov. Za izdelavo Node.js in ogrodja, ki se izvajajo na odjemalcu, je bil potreben en jezik. "JavaScript povsod" je za nekatere postal mantra.

Od tega odkritja je JavaScript eksplodiral. Razvijalci Node.js lahko zdaj izbirajo med vedno večjo zbirko odličnih okvirov in odrov: React, Vue, Express, Angular, Meteor in še več. Seznam je dolg in največja težava je izbira med odličnimi možnostmi.

Nekateri gledajo na razcvet v Node.js kot na dokaz, da je JavaScript odločilno zmagoval in obstaja veliko surovih podatkov, ki podpirajo ta pogled. GitHub poroča, da je JavaScript najbolj priljubljen jezik v svoji zbirki skladišč, in poljubni bratranec JavaScript, TypeScript, tudi hitro narašča. Številni najbolj kul projekti so napisani v JavaScript-u in nanje se nanašajo najbolj priljubljeni hashtagovi. PHP je medtem na tej lestvici s tretjega mesta padel na četrto, verjetno pa je še bolj zdrsnil pri številu sporočil za javnost, uvajanju izdelkov in drugih tržnih trenutkih.

Toda hype zbledi in programska oprema lahko živi desetletja. Večina kode PHP ne bo migrirala in še naprej služi velikim delom besedila, ki ga preberemo vsak dan. Po nekaterih ocenah 40 odstotkov strani, ki si jih ogledamo, v neki obliki začne s PHP. Del tega je zato, ker se PHP še naprej preroja. V zadnjih nekaj letih so drobovi sistemov s PHP popolnoma preoblikovani. To ni ista koda PHP, ki je vodila spletno stran vašega starega starša.

PHP-jev hiter, pravočasno pripravljen prevajalnik zagotavlja odgovore hitreje kot kdaj koli prej, zahvaljujoč istim pametnim tehnikam, ki so poganjale revolucijo Node.js. Zdaj PHP 7.2 in HHVM ponujata veliko istih pametnih optimizacij med letom, ki jih je V8 prinesel v Chrome in Node.js. Ne samo to, HHVM ima tudi Hack, pametno narečje PHP, ki ponuja popolno podporo za sofisticirane programske funkcije, kot so lambda, generiki in zbirke. Če torej potrebujete te funkcije, vam ni treba iskati bolj popolnega sklada.

Seveda konec še ni napisan. Za vsakega kodirnika, ki povsod čuje o čistosti in mladosti Node.js ter preprostosti JavaScripta, je še en, ki je zadovoljen z globoko osnovo kode in dolgo razumljeno stabilnostjo PHP. Ali bo stari codger premagal strežnik? Bo JavaScript zrušil svojega starega prijatelja, da bi dosegel prevlado na svetu? V mikrovalovno pečico dajte še eno serijo kokic in se usedite.

Kje PHP zmaga: mešanje kode z vsebino

Tipkate, vlivate misli v besedilo za svoje spletno mesto in želite postopku dodati vejo, malo izjave if-then, da bo videti, na primer, lepo, odvisno od nekega parametra v URL-ju. Ali pa morda želite vmešati besedilo ali podatke iz baze podatkov. S PHP odprete čarobne oznake PHP in začnete pisati kodo v nekaj sekundah. Ni potrebe po predlogah - vse je predloga! Ni potrebe po dodatnih datotekah ali izpopolnjenih arhitekturah, le programibilna logistična moč je na dosegu roke.

Kje Node zmaga: ločevanje skrbi

Mešanje kode z vsebino je bergla, ki vas lahko na koncu hromi. Seveda je zabavno mešati kodo z HTML-jem dvakrat ali trikrat, ko to storite. Toda kmalu postane vaša osnova kode zapletena logika. Pravi programerji dodajo strukturo in ločijo kozmetični sloj od logičnega. Za nove programerje je čistejše za razumevanje in lažje za vzdrževanje. Okvire, ki se izvajajo na Node.js, gradijo programerji, ki vedo, da je življenje boljše, če so model, pogled in krmilnik ločeni.

Kje PHP zmaga: Globoka osnova kode

Splet je napolnjen s kodo PHP. Najbolj priljubljene platforme za izdelavo spletnih strani (WordPress, Drupal, Joomla) so napisane v PHP. Ne samo, da so platforme odprtokodne, ampak tudi večina njihovih vtičnikov. Koda PHP je povsod in čaka, da jo prenesete, spremenite in uporabite za svoje potrebe.

Kje Node zmaga: sodobnejše funkcije

Seveda obstaja na tisoče odličnih odprtokodnih datotek PHP, nekateri pa so 12-letni vtičniki WordPress, ki upajo in molijo, da jih bo kdo prenesel. Za vsako moderno različico Symfonyja obstaja prašna, pozabljena knjižnica, ki je nihče ne posodablja.

Kdo želi preživeti ure, dneve ali tedne v opicah s kodo, ki že leta ni bila posodobljena? Vtičniki Node.js niso samo novejši, temveč so bili zgrajeni s popolnim poznavanjem najnovejših arhitekturnih pristopov. Zgradili so jih programerji, ki razumejo, da bi morale sodobne spletne aplikacije večino inteligence potisniti stranki.

In čeprav ima JavaScript veliko majhnih posebnosti, ki nekatere obnorejo, je večinoma sodoben jezik, ki vsebuje sodobno sintakso in nekaj uporabnih funkcij, kot so zapore. Lahko ga enostavno konfigurirate in razširite, tako da omogočite zmogljive knjižnice, kot je jQuery. Funkcije lahko prenašate okoli kot predmeti. Zakaj se omejevati?

Kje PHP zmaga: preprostost (nekako)

PHP ni veliko: nekaj spremenljivk in osnovnih funkcij za žongliranje nizov in števil. To je tanka plast, ki ne naredi veliko, razen če podatke premakne iz vrat 80 v bazo podatkov in nazaj. To naj bi storili. Sodobna baza podatkov je čarobno orodje, zato je smiselno, da se ji težko prepustite. PHP je prava mera zapletenosti za delo, ki naj ne bi bilo zapleteno.

Potem pa, če ste programer, ki želi narediti več kot le sodelovati z bazo podatkov in formatirati rezultate, lahko zdaj s PHP naredite več, ne da bi se držali za nos. Facebook-ov HHVM dodaja podporo za Hack, popoln jezik, ki je napolnjen s sodobnimi funkcijami, kot so oznake vrst, generiki in lambda izrazi. Če to uporabite, omejite kodo samo na HHVM, vendar to ni najslabša stvar na svetu. To je zelo hitro.

Kje Node zmaga: na ducate jezikovnih možnosti

Če uporabniki PHP z veseljem dobijo dostop do Hack-a, bi morali razmisliti o selitvi v svet Node.js, ker je mogoče številne glavne jezike navzkrižno prevesti, da bi se izvajali v JavaScriptu. Obstajajo dobro znane možnosti, kot so Java, C # ali Lisp in na ducate drugih, kot so Scala, OCaml in Haskell. Obstajajo celo darila za nostalgične ljubitelje BASIC-a ali Pascala. Ta seznam jezikov, ki jih Jeremy Ashkenas prevede v JavaScript, je dokaj obsežen. Poleg tega bratranci JavaScript, kot sta TypeScript in CoffeeScript, ponujajo nekoliko drugačne in izboljšane pristope k isti igri.

Kje PHP zmaga: nobena odjemalska aplikacija ni potrebna

Vsi govori o uporabi istega jezika v brskalniku in na strežniku so lepi, a kaj, če v brskalniku ne potrebujete nobenega jezika? Kaj če podatke pošljemo v obliki HTML? Kaj pa, če gradite špartansko, statično spletno mesto, ki bo zagotavljalo natančno tisto, kar je potrebno brez interaktivnega blinga? Brskalnik ga odpre in ni preglavic ali napak zaradi napačnega sprožitve niti JavaScript, ki skuša ustvariti stran v brskalniku iz dveh ducatov klicev spletnih storitev. Čisti HTML deluje pogosteje kot karkoli drugega, PHP pa je optimiziran za to. Zakaj bi se mučil z JavaScriptom v brskalniku? Zgradite vse na strežniku in se izogibajte preobremenitvi tega malega brskalnika na telefonu.

Kje Node zmaga: servisni klici so tanjši od HTML-maščobnih klicev PHP

Spletne aplikacije, ki imajo nor AJAX HTML5, imajo lahko preveč gibljivih delov, so pa kul in zelo učinkovite. Ko je koda JavaScript v predpomnilniku brskalnika, se po žicah premikajo samo novi podatki. Oznake HTML ni na tone in ni ponavljajočih se potovanj za prenos celotne strani. Spremenili so se samo podatki. Če ste pripravljeni vložiti čas, da ustvarite gladko spletno aplikacijo na strani brskalnika, je veliko izplačilo. Node.js je optimiziran za dostavo podatkov in samo podatkov prek spletnih storitev. Če je vaša aplikacija zapletena in bogata s podatki, je to dober temelj za učinkovito dostavo.

Kje PHP zmaga: SQL

PHP je bil zasnovan za soobstoj z MySQL in njegovimi številnimi različicami, kot je MariaDB. Če MySQL ni povsem v redu, obstajajo še druge odlične zbirke podatkov SQL iz Oracle in Microsoft. Vaša koda se lahko z nekaj spremembami preklopi na vaša vprašanja. Prostrani svet SQL se ne konča na svojih mejah. Nekatere najbolj stabilne, dobro razvite kode se bodo povezale z bazo podatkov SQL, kar pomeni, da je vso to moč mogoče enostavno vključiti v PHP projekt. Mogoče ni ena popolna, srečna družina, je pa velika. Ne samo to, ampak svet baz podatkov se počasi izboljšuje, saj razvijalci najdejo načine, kako dodati več inteligence v bazo podatkov, tako da vam ni treba tako trdo delati.

Kje zmaga Node.js: JSON

Če morate imeti dostop do SQL, ima Node.js knjižnice za to. Toda Node.js govori tudi JSON, lingua franca za interakcijo s številnimi najnovejšimi podatkovnimi bazami NoSQL. To še ne pomeni, da za svoj PHP sklad ne morete dobiti knjižnic JSON, je pa nekaj preprostega glede preprostosti dela z JSON pri uporabi JavaScript. To je ena sintaksa od brskalnika do spletnega strežnika do baze podatkov. Dvopičje in skodrani oklepaji delujejo povsod enako. Že samo to vas bo rešilo ur frustracije.

Kje PHP zmaga: Hitrost kodiranja

Za večino razvijalcev je pisanje PHP za spletne aplikacije hitrejše: brez prevajalnikov, brez uvajanja, brez datotek JAR ali predprocesorjev - preprosto vaš najljubši urejevalnik in nekaj datotek PHP v imeniku. Vaša kilometrina se bo razlikovala, toda ko gre za hitro razbijanje projektov, je PHP dobro orodje za uporabo.

Kje zmaga Node.js: Hitrost aplikacije

Pisanje kode JavaScript je nekoliko težje, ko štejete kodraste oklepaje in oklepaje, toda ko končate, lahko koda Node.js leti. Mehanizem povratnega klica je sijajen, saj vam prihrani žongliranje z nitmi. Jedro je dobro zgrajeno in zasnovano tako, da vse to naredi za vas. Ali ni to tisto, kar si vsi želijo?

Kje PHP zmaga: Tekmovanje

Bitka za srca in misli razvijalcev PHP se še vedno odvija. Ekipa HHVM in ekipa Zend si močno prizadevata, da bi zagotovili hitro kodo za vse. Pojavljajo se neodvisna merila uspešnosti in vsi potiskajo osnove kode do konca. To pomeni le boljše delovanje.

Kje zmaga Node.js: Solidarnost

Si res želite dve različni osnovi kod? Seveda konkurenca pomaga, vendar kmalu sledi razdrobljenost. Kaj se zgodi, če vaša koda deluje samo na enem od obeh? Konkurenca ne prinese nič dobrega, če morate tedne ali mesece prepisovati svojo kodo. Medtem ko je Node.js doživel lastno razdrobljenost nekaj let nazaj, se je z uvedbo io.js vesolje Node.js od takrat ponovno združilo in mu dalo takšno jezikovno solidarnost, po kateri bodo razvijalci PHP kmalu lahko hrepeneli.

Kje PHP zmaga: Osnovne aplikacije

V zadnjih nekaj letih je nekaj razvijalcev zagnalo spletne aplikacije in se razočaralo zaradi počasnega vedenja. JavaScript, ki poganja vse te premikajoče se kose, je lahko več deset tisoč bajtov, včasih tudi sto tisoč. Ko prispejo vsi paketi, jih je treba razčleniti, zbrati in na koncu izvesti - vse, da dostavijo nekaj bajtov, kot sta temperatura in napoved.

Odziv na to rokoko norost lahko najdemo v skupinah, ki gradijo statične generatorje spletnih mest (463 v tem članku) in odstranjene spletne strani v formatu AMP. PHP je naravna izbira za vsako ekipo, ki želi osredotočiti inteligenco na strežnik, tako da odjemalec ne bo preobremenjen.

Kje zmaga Node.js: bogastvo

Ludwig Mies van der Rohe, arhitekt stavb, je nekoč dejal: "Manj je več." Prišel je Robert Venturi, še en arhitekt, in odvrnil: "Manj je dolgočasje." Pametni telefoni imajo več moči kot soba, polna računalnikov Cray. Namizja imajo grafične kartice z več ventilatorji, da se ohladijo med celotno obdelavo. Zakaj bi morali sleči svojo kodo in živeti kot žrtev obdobja depresije v Steinbeckovem romanu? Uživati. Velika, gladka spletna mesta, polna kode JavaScript, so privlačna, dramatična in predvsem zabavna. Seveda je nekako nespodobno zapraviti toliko pasovne širine za nekaj bitov podatkov, vendar pasovna širina še nikoli ni bila cenejša. Živi malo!

Kjer zmagata oba: Brez glave

Beseda "brez glave" se nanaša na PHP kodo, ki se izvaja na strežniku. V zadnjem času so nekatere izmed najboljših PHP aplikacij, kot je Drupal, zrle čez prehod in presenečene nad prefinjenimi uporabniškimi vmesniki, ki jih gradijo okviri JavaScript, kot so React, Angular ali Vue. Namesto da bi poskušali konkurirati z njimi, se odpovedujejo nadzoru stranke in se osredotočajo na dobro delo z zalednim delom strežnika.

Če ste precej vložili v PHP kodo, ki se izvaja na strežniku, je to morda način, da uživate v najboljših obeh pristopih. Stara, uveljavljena koda PHP deluje kot vhodna vrata v bazo podatkov, dvakrat preveri zahteve, očisti podatke in na splošno zagotavlja vso poslovno logiko. Stranka je napredna spletna aplikacija, napisana z najnovejšim okvirom JavaScript. Ko potrebuje informacije, pošlje zahtevo AJAX na kodo PHP.

To morda ni smiselno za nekoga, ki začne od začetka, toda če se že leta zanašate na PHP in želite postopoma naprej, je to lahko srečen kompromis.

Kjer zmagata oba: mikro storitve in brez strežnikov

Naraščajoče paradigme mikrostoritev ali brez strežnikov ponujajo način, da koda JavaScript in PHP sodelujeta med strežnikom in se razumeta. Obe rešitvi delita delo na desetine manjših storitev ali funkcij, ki lahko delujejo neodvisno in ostanejo na svojih poteh. Nekateri deli, običajno starejši in najbolj stabilni odseki aplikacije, lahko zaženejo PHP. Drugi deli, pogosto novejši, bodo zapisani v Node.js. Jezik OBJAVI ali GET je lahko lingua franca, ki jih vse združuje.

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