Programmēšana

Node.js pret PHP: episka cīņa par izstrādātāju mindshare

Tas ir klasisks Holivudas sižets: cīņa starp diviem veciem draugiem, kuri gāja atsevišķi. Bieži berzes sākas tad, kad viens draugs izraisa interesi par to, kas vienmēr bija otra palāta neizrunātais domēns. Šīs filmas programmēšanas valodas versijā tas ir Node.js ieviešana, kas pārvērš draugu par ļaunu prātu: PHP un JavaScript, divi partneri, kas reiz valdīja internetā kopā, bet tagad to attur no izstrādātāju domām.

Agrāk partnerattiecības bija vienkāršas. JavaScript pārlūkprogrammā apstrādāja maz informācijas, savukārt PHP pārvaldīja visus servera puses uzdevumus starp 80. portu un MySQL. Tā bija laimīga savienība, kas turpina atbalstīt daudzas izšķirošās interneta daļas. Starp WordPress, Drupal un Facebook cilvēki diez vai var pavadīt minūti tīmeklī, neiedarbojoties ar PHP.

Tad kāds gudrs bērns atklāja, ka viņš serverī var palaist JavaScript. Pēkšņi nevajadzēja izmantot PHP, lai izveidotu nākamās paaudzes serveru skursteņus. Lai izveidotu Node.js un klientam darbojošos ietvarus, bija nepieciešama tikai viena valoda. Dažiem par mantru kļuva “JavaScript visur”.

Kopš šī atklājuma JavaScript ir eksplodējis. Node.js izstrādātāji tagad var izvēlēties starp arvien pieaugošo izcilo ietvaru kolekciju un sastatnēm: React, Vue, Express, Angular, Meteor un daudz ko citu. Saraksts ir garš, un lielākā problēma ir izvēle starp izcilām iespējām.

Daži aplūko Node.js uzplaukumu kā pierādījumu tam, ka JavaScript izšķiroši uzvar, un ir daudz neapstrādātu datu, kas šo skatu nostiprinātu. GitHub ziņo, ka JavaScript ir vispopulārākā valoda tās krātuvju kolekcijā, un arī JavaScript skūpstošais brālēns TypeScript strauji pieaug. Daudzi no stilīgākajiem projektiem ir rakstīti JavaScript valodā, un uz to atsaucas daudzi populārākie mirkļbirkas. Pa to laiku PHP šajā rangā ir noslīdējusi no trešās vietas uz ceturto vietu, un, iespējams, tā ir vēl vairāk samazinājusies preses relīžu, produktu ieviešanas un citu stipri pārdoto momentu skaitā.

Bet satraukums izzūd un programmatūra var dzīvot gadu desmitiem. Lielākā daļa PHP kodu bāzes netiks migrēta, un tā turpina apkalpot lielas teksta daļas, kuras mēs katru dienu lasām. Pēc dažām aplēsēm 40 procenti no mūsu apskatītajām lapām kaut kādā veidā sākas ar PHP. Daļa no tā ir tāpēc, ka PHP turpina atdzimt. Dažu pēdējo gadu laikā PHP palaisto sistēmu iekšas ir pilnībā pārrakstītas. Tas nav tas pats PHP kods, kas izmantoja jūsu vecvecāku vietni.

Pateicoties tiem pašiem viedajiem paņēmieniem, kas nodrošināja Node.js revolūciju, PHP ātrais, tieši laikā savāktais kompilators sniedz atbildes ātrāk nekā jebkad agrāk. Tagad PHP 7.2 un HHVM piedāvā daudzas tās pašas gudrās lidojuma optimizācijas, kuras V8 nodrošināja pārlūkiem Chrome un Node.js. Ne tikai tas, bet HHVM ir Hack, gudrs PHP dialekts, kas piedāvā pilnu atbalstu sarežģītām programmēšanas funkcijām, piemēram, lambdas, vispārējiem un kolekcijām. Tātad, ja jums ir nepieciešamas šīs funkcijas, jums nav jāmeklē pilnvērtīgāka kaudze.

Protams, beigas vēl nav rakstītas. Katram kodētājam, kurš visur interesējas par Node.js tīrību un jaunību un JavaScript vienkāršību, ir kāds cits, kurš ir apmierināts ar dziļo kodu bāzi un sen saprotamo PHP stabilitāti. Vai vecais kodētājs pārspēs servera pusi augšup? Vai JavaScript sagāzīs savu veco draugu, lai iegūtu pasaules kundzību? Ielieciet vēl vienu popkornu partiju mikroviļņu krāsnī un sēdiet.

Kur uzvar PHP: koda sajaukšana ar saturu

Jūs rakstāt pa tekstu, lietojot domas savas vietnes tekstā, un vēlaties procesam pievienot zaru, nelielu paziņojumu, ja, tad, lai tas izskatās jauks, piemēram, atkarībā no kāda parametra URL. Vai varbūt vēlaties sajaukt tekstu vai datus no datu bāzes. Izmantojot PHP, jūs atverat burvīgos PHP tagus un sākat rakstīt kodu dažu sekunžu laikā. Veidnes nav vajadzīgas - viss ir veidne! Nav nepieciešami papildu faili vai sarežģītas arhitektūras, tikai programmējama loģistikas jauda jūsu rokai.

Kur uzvar mezgls: problēmu atdalīšana

Koda sajaukšana ar saturu ir kruķis, kas var beigties ar tevi. Protams, ir jautri sajaukt kodu ar HTML pirmās divas vai trīs reizes, kad to darāt. Bet drīz vien jūsu kodu bāze kļūst par samudžinātu loģikas jucekli. Īsti programmētāji pievieno struktūru un atdala kosmētikas slāni no loģiskā slāņa. Jaunajiem programmētājiem ir tīrāk saprast, un tos ir vieglāk uzturēt. Rāmjus, kas darbojas vietnē Node.js, veido programmētāji, kuri zina, ka dzīve ir labāka, ja modelis, skats un kontrolieris ir atsevišķi.

Kur uzvar PHP: dziļa kodu bāze

Tīmeklis ir piepildīts ar PHP kodu. Populārākās vietņu veidošanas platformas (WordPress, Drupal, Joomla) ir rakstītas PHP. Platformas ir ne tikai atvērtā koda, bet arī lielākā daļa to spraudņu. Visur ir PHP kods, un tas gaida, kad jūs lejupielādēsit, pārveidosiet un izmantosiet savām vajadzībām.

Kur uzvar mezgls: modernākas funkcijas

Protams, ir tūkstošiem lielisku atvērtā koda PHP failu, taču daži ir 12 gadus veci WordPress spraudņi, kas cer un lūdz, lai kāds tos lejupielādētu. Katrai mūsdienu Symfony versijai ir noputējusi, sen aizmirsta bibliotēka, kuru neviens neatjaunina.

Kurš vēlas pavadīt stundas, dienas vai nedēļas, pērkot ar kodu, kas gadiem ilgi nav atjaunināts? Node.js spraudņi ir ne tikai jaunāki, bet arī veidoti, pilnībā pārzinot jaunākās arhitektūras pieejas. Tos uzbūvēja programmētāji, kuri saprot, ka mūsdienu tīmekļa lietotnēm lielākajai daļai inteliģences jāpiedalās klientam.

Un, lai gan JavaScript ir daudz mazu īpatnību, kas dažus padara trakus, lielākoties tā ir mūsdienīga valoda, kurā tiek izmantota moderna sintakse un dažas noderīgas funkcijas, piemēram, slēgšana. Jūs to varat viegli pārkonfigurēt un paplašināt, padarot iespējamas tādas spēcīgas bibliotēkas kā jQuery. Var nodot funkcijas apkārt kā objektiem. Kāpēc ierobežot sevi?

Kur uzvar PHP: vienkāršība (sava ​​veida)

PHP nav daudz: daži mainīgie un pamatfunkcijas žonglēšanai ar virknēm un skaitļiem. Tas ir plāns slānis, kas neko daudz nedara, izņemot datu pārvietošanu no 80. porta uz datu bāzi un atpakaļ. Tas ir jādara. Mūsdienu datu bāze ir maģisks rīks, un ir lietderīgi atstāt smago celšanu tai. PHP ir piemērots sarežģītības pakāpe darbam, kas, domājams, nav sarežģīts.

Tad atkal, ja esat programmētājs, kurš vēlas darīt vairāk nekā mijiedarboties ar datu bāzi un formatēt rezultātus, tagad varat darīt vairāk ar PHP, neturot degunu. Facebook HHVM papildina atbalstu Hack, pilnīgai valodai, kas piepildīta ar mūsdienīgām funkcijām, piemēram, tipa anotācijām, sugasvārdiem un lambda izteicieniem. Izmantojot šo kodu, jūsu kods darbojas tikai HHVM, taču tas nav sliktākais pasaulē. Tas ir ļoti ātri.

Kur uzvar mezgls: desmitiem valodu opciju

Ja PHP lietotāji labprāt saņem piekļuvi Hack, viņiem vajadzētu apsvērt iespēju pārcelties uz Node.js pasauli, jo daudzas galvenās valodas var savstarpēji apkopot, lai tās darbotos JavaScript. Ir plaši pazīstamas opcijas, piemēram, Java, C # vai Lisp, un desmitiem citu, piemēram, Scala, OCaml un Haskell. Ir pat dāvanas nostalģiskiem BASIC vai Pascal mīļotājiem. Šis valodu saraksts, kas tiek sastādīts uz Java no Jeremy Ashkenas, ir diezgan visaptverošs. Plus JavaScript brālēni, piemēram, TypeScript un CoffeeScript, piedāvā nedaudz atšķirīgu un uzlabotu pieeju tai pašai spēlei.

Kur uzvar PHP: nav nepieciešama klienta lietotne

Visas runas par vienas un tās pašas valodas lietošanu pārlūkprogrammā un serverī ir jaukas, bet ko darīt, ja pārlūkprogrammā nav jāizmanto neviena valoda? Ko darīt, ja datus nosūta HTML formā? Ko darīt, ja jūs veidojat statisku spartiešu vietni, lai bez interaktīvās blinga sniegtu stingri nepieciešamo? Pārlūkprogramma to uznirst, un nav galvassāpju vai traucējumu, ko izraisa nepareizi darbojošies JavaScript pavedieni, kas mēģina izveidot lapu pārlūkprogrammā no diviem desmitiem tīmekļa pakalpojumu zvanu. Pure HTML darbojas biežāk nekā jebkas cits, un PHP ir optimizēts, lai to izveidotu. Kāpēc jāuztraucas ar JavaScript pārlūkprogrammā? Izveidojiet visu serverī un izvairieties no pārlūkprogrammas pārslodzes mazajā tālrunī.

Kur uzvar mezgls: Pakalpojuma zvani ir plānāki nekā HTML taukus saturoši PHP zvani

Kaut arī AJAX-crazy HTML5 tīmekļa lietotnēs var būt pārāk daudz kustīgu daļu, tās ir foršas un ļoti efektīvas. Kad JavaScript kods ir pārlūkprogrammas kešatmiņā, vienīgais, kas pārvietojas pa vadiem, ir jaunie dati. HTML marķējuma nav daudz, un nav atkārtotu ceļojumu, lai lejupielādētu visu lapu. Mainīti tikai dati. Ja esat gatavs veltīt laiku, lai izveidotu vienkāršu pārlūkprogrammas tīmekļa lietotni, ir liels izmaksa. Node.js ir optimizēts, lai piegādātu datus un tikai tos, izmantojot tīmekļa pakalpojumus. Ja jūsu lietotne ir sarežģīta un bagāta ar datiem, tā ir labs pamats efektīvai piegādei.

Kur uzvar PHP: SQL

PHP tika izveidots, lai pastāvētu līdzās MySQL un daudziem tā variantiem, piemēram, MariaDB. Ja MySQL nav precīzi pareizs, ir arī citas lieliskas Oracle un Microsoft SQL datu bāzes. Jūsu kodu var pārslēgt, veicot dažas izmaiņas jūsu vaicājumos. Plašā SQL pasaule nebeidzas pie tās robežām. Daži no stabilākajiem, labi attīstītajiem kodiem būs saskarnes ar SQL datu bāzi, kas nozīmē, ka visu šo jaudu var viegli integrēt arī PHP projektā. Varbūt tā nav viena perfekta, laimīga ģimene, bet tā ir liela. Ne tikai tas, bet datu bāzu pasaule lēnām uzlabojas, jo izstrādātāji atrod veidus, kā datu bāzei pievienot vairāk informācijas, lai jums nebūtu jāstrādā tik smagi.

Kur uzvar Node.js: JSON

Ja jums ir nepieciešama piekļuve SQL, Node.js ir bibliotēkas, lai to izdarītu. Bet Node.js runā arī JSON, lingua franca, lai mijiedarbotos ar daudzām jaunākajām NoSQL datu bāzēm. Tas nenozīmē, ka jūs nevarat iegūt JSON bibliotēkas savam PHP kaudzei, taču kaut kas plūst par vienkāršu darbu ar JSON, izmantojot JavaScript. Tā ir viena sintakse no pārlūka uz tīmekļa serveri uz datu bāzi. Resnās zarnas un cirtainās iekavas visur darbojas vienādi. Tas vien ietaupīs jūs no neapmierinātības stundām.

Kur uzvar PHP: kodēšanas ātrums

Lielākajai daļai izstrādātāju PHP rakstīšana tīmekļa lietotnēm šķiet ātrāka: bez kompilatoriem, bez izvietošanas, bez JAR failiem vai priekšapstrādātājiem - vienkārši jūsu iecienītākais redaktors un daži PHP faili direktorijā. Jūsu nobraukums būs atšķirīgs, taču, ja nepieciešams ātri sasist projektu, PHP ir labs izmantojamais rīks.

Kur uzvar Node.js: lietojumprogrammas ātrums

Rakstot JavaScript kodu, ir mazliet grūtāk, ja skaitāt cirtainās iekavas un iekavas, bet, kad tas ir izdarīts, jūsu Node.js kods var lidot. Atzvana mehānisms ir izcils, jo tas ietaupa jūs no žonglēšanas ar pavedieniem. Kodols ir labi uzbūvēts un izstrādāts, lai to visu paveiktu jūsu vietā. Vai tas nav tas, ko visi vēlas?

Kur uzvar PHP: Konkurence

Cīņa par PHP izstrādātāju sirdīm un prātiem joprojām norisinās. HHVM komanda un Zend komanda cītīgi strādā, lai visiem nodrošinātu ātru kodu. Tiek parādīti neatkarīgi kritēriji, un visi spiež kodu bāzes līdz robežai. Tas nozīmē tikai labāku sniegumu.

Kur uzvar Node.js: solidaritāte

Vai tiešām vēlaties divas dažādas kodu bāzes? Protams, konkurence palīdz, bet drīz seko sadrumstalotība. Kas notiek, ja kods darbojas tikai vienā no diviem? Konkurence nedod neko labu, ja jums jāpavada nedēļas vai mēneši, pārrakstot kodu. Kaut arī Node.js dažus gadus atpakaļ piedzīvoja savu šķelšanos, līdz ar io.js izlaišanu, Node.js Visums kopš tā laika ir atkal apvienojies, piešķirot tam tādu valodas solidaritāti, pēc kuras PHP izstrādātāji drīz varētu ilgoties.

Kur uzvar PHP: pamata lietotnes

Dažu pēdējo gadu laikā daži izstrādātāji ir izveidojuši tīmekļa lietotnes un kļuvuši neapmierināti ar gauso uzvedību. JavaScript, kas vada visus šos kustīgos gabalus, var būt desmitiem tūkstošu baitu, dažreiz simtiem tūkstošu. Kad visas paketes ir ieradušās, tās ir jāizanalizē, jāapkopo un beidzot jāizpilda - visas, lai nodrošinātu dažus baitus, piemēram, temperatūru un prognozi.

Pretreakcija pret šo vājprātīgo rokoku ir atrodama komandās, kas veido statisko vietņu ģeneratorus (463 šajā rakstā) un noņemtajās tīmekļa lapās AMP formātā. PHP ir dabiska izvēle jebkurai komandai, kas vēlas koncentrēt intelektu serverī, lai klients netiktu pārslogots.

Kur uzvar Node.js: bagātība

Ēku arhitekts Ludvigs Mīss van der Rohe reiz teica: "Mazāk ir vairāk." Atnāca cits arhitekts Roberts Venturi un atcirta: "Mazāk ir garlaicīgi." Viedtālruņiem ir lielāka jauda nekā telpā, kas pilna ar Cray datoriem. Galddatoriem ir videokartes ar vairākiem ventilatoriem, lai tās būtu vēsas visas apstrādes laikā. Kāpēc mums vajadzētu noņemt kodu un dzīvot kā depresijas laikmeta upurim Šteinbeka romānā? Izdzīvo pilnvērtīgi. Lielas, slaidas vietnes, kas pilnas ar JavaScript kodu, ir pievilcīgas, dramatiskas un galvenokārt jautras. Protams, tas ir sava veida piedauzīgi, ja tiek izšķērdēts tik liels joslas platums uz dažiem datu bitiem, taču joslas platums nekad nav bijis lētāks. Mazliet dzīvo!

Kur abi uzvar: bez galvas

Vārds “bez galvas” attiecas uz PHP kodu, kas darbojas serverī. Nesen dažas no populārākajām PHP lietojumprogrammām, piemēram, Drupal, ir ielūkojušās ejā un nāk pārsteigtas par izsmalcinātām lietotāja saskarnēm, kuras izveidojuši JavaScript ietvari, piemēram, React, Angular vai Vue. Tā vietā, lai mēģinātu konkurēt ar viņiem, viņi atsakās no klienta kontroles un koncentrējas uz labu darbu ar servera aizmuguri.

Ja esat diezgan daudz ieguldījis PHP kodā, kas darbojas serverī, tas var būt veids, kā izbaudīt labāko no abām pieejām. Vecais, izveidotais PHP kods darbojas kā ieejas durvis datu bāzei, vēlreiz pārbaudot pieprasījumus, sakopjot datus un parasti nodrošinot visu biznesa loģiku. Klienta puse ir progresīva tīmekļa lietotne, kas rakstīta ar jaunāko JavaScript sistēmu. Kad tai ir nepieciešama informācija, tā nosūta AJAX pieprasījumu uz PHP kodu.

Varbūt tam nav jēgas kādam sākt no nulles, bet, ja jūs gadiem ilgi paļāvāties uz PHP un vēlaties pakāpeniski virzīties uz priekšu, tas var būt laimīgs kompromiss.

Kur uzvar abi: mikropakalpojumi un bez serveriem

Pieaugošās mikroservisa vai bez servera paradigmas piedāvā iespēju JavaScript un PHP kodam sadzīvot serveri un sadzīvot. Abi risinājumi darbu sadala desmitos mazāku pakalpojumu vai funkciju, un tie var darboties neatkarīgi un palikt savās joslās. Dažas daļas, parasti vecākās un stabilākās lietotnes sadaļas, var palaist PHP. Pārējās daļas, bieži vien jaunākās, tiks rakstītas vietnē Node.js. Valoda POST vai GŪT var būt lingua franca, kas viņus visus vieno.