De mest populære PHP-rammeverkene. Web Frameworks: En introduksjon for nybegynnere

Ved utvikling av evt programvareprodukt Utviklingsteamet står først og fremst overfor oppgaven med å kompetent velge en programvareplattform som bestemmer strukturen til programvaresystemet.

For å gjøre dette må du ta hensyn til et ganske stort antall egenskaper, fra "hvor raskt alt vil fungere" til "trenger vi denne funksjonen?" Og slik hver gang. Det er i øyeblikkene idédugnad teamet sammenligner brukervennligheten til rammeverket, hastigheten og settet med funksjoner som er implementert i det eller i moduler som er kompatible med det.

Men hvilken er bedre, raskere og mer produktiv?

Utviklere sammenligner kontinuerlig rammeverk for å avklare dette problemet. For eksempel gir artikkelen av Lukasz Kujawa en sammenligning av PHP-rammeverk. Ett "men" - artikkelen er fra 2013. Men tiden går... Derfor bestemte vi oss for å gjennomføre vår egen, oppdaterte sammenligning av rammeverk.

PHP Framework Benchmark ble brukt til å evaluere ytelsen. Han tilbyr mange rammer for sammenligning (ikke bare de som er nevnt ovenfor), men forfatteren har ikke hastverk med å legge til nye versjoner av prosjekter til depotet, noe som selvfølgelig er trist, men ikke fatalt. Det er ikke vanskelig å legge til en ny versjon hvis du vil.

Et av hovedmålene med denne artikkelen er også å forsøke å identifisere på en praktisk måte forbedringer i produktiviteten og effektiviteten til nye PHP-versjoner. Derfor ble testing utført på PHP 5.6/7.0/7.1

Hva skal vi sammenligne?

Følgende rammeverk ble valgt for sammenligning:
  • slank-3,0
  • ci-3,0
  • lumen-5,1
  • yii-2,0
  • silex-1.3
  • drivstoff-1,8
  • phpixie-3.2
  • zf-2,5
  • zf-3.0
  • symfoni-2.7
  • symfoni-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (versjon 7.0.0 - for PHP5.6 og versjon 7.4 for PHP7.0 og høyere)
  • ze-1,0
  • phalcon-3.0
Testing er delt inn i 4 typer:
  • ytelse (gjennomstrømning),
  • okkupert minne (minne),
  • utførelsestid (eksekveringstid),
  • antall inkluderte filer.

Testmetodikk og teststand

Maskinen som brukes til testing har følgende egenskaper:

Operasjonssystem: Linux Mint 17 kanel 64-bit
Cinnamin versjon 2.2.16
Linux-kjernen: 3.13.0-24-generisk
Prosessor: Intel Core i3-4160 CPU 3,60 Ghz X 2
Minne: 8 GB

Serverversjon: Apache/2.4.7 (ubuntu)
Serverbygging: 15. juli 2016
php 7.1 / php7.0 / php5.6

Vi går inn i kommandoen git clone https://github.com/kenjis/php-framework-benchmark - og rammen er allerede på maskinen vår. Siden vi brukte Mint, må vi gjøre noe oppsett:

# Addednet.netfilter.nf_conntrack_max = 100000net.nf_conntrack_max = 100000net.ipv4.tcp_max_tw_buckets = 180 000net.ipv4.tcp_tw_recycle = 1net.ipv4.tcv4.tcvfin_1tw_1

Sudo sysctl -s

Litt om strukturen til selve php-framework-benchmark:

/benchmarks- inneholder bash-skript som er ansvarlig for å samle informasjon om antall forespørsler per sekund (ved hjelp av ab-verktøyet), mengden informasjon, hvor mye tid som ble brukt og hvor mange filer som ble kalt fra "startpunkt"-filen.

/lib- en katalog som inneholder filer som er ansvarlige for å behandle den mottatte informasjonen etter å ha vist «Hello world»-siden, visning av tabeller med resultater og konstruksjon av diagrammer.

/produksjon- katalog som logger legges til etter testing. Det er to filer her for hver testet fil: .ab.log - loggen etter at ab-verktøyet kjørte, og .output - inneholder informasjon som ble vist på skjermen (vanligvis hello world og data om minne, utførelsestid og brukte filer ).

De resterende mappene er rammemaler, som en kontroller allerede er lagt til, som vil returnere strengen "hello world" når den åpnes av en URI kompilert i henhold til reglene for tilgang til dette rammeverket.

For å kjøre en test må du først konfigurere rammene. La oss vurdere to tilnærminger.

Bash setup.sh-kommandoen vil konfigurere de rammene som er beskrevet i list.sh-filen. Du kan redigere den: legg til og fjern mapper for testing. Det vil si, konfigurer den slik du trenger.

Ved å bruke kommandoen bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/ kan du installere enkelte rammeverk ved å spesifisere dem som parametere for kommandoen. I noen tilfeller er dette praktisk, men vi brukte den første tilnærmingen.

Etter å ha satt opp rammene, begynte vi å teste med bash benchmark.sh.

På slutten av arbeidet dukket det opp en tabell i terminalen med en liste over testede rammer, antall forespørsler per sekund, den relative verdien av minnet som er okkupert, samt de relative verdiene til disse indikatorene.

For å vise grafene brukte vi lenken http://localhost/php-framework-benchmark/.

Som du forstår, var det nødvendig å lage Apache oppsett og tving den til å se på rammemappen. Alt dette er beskrevet i readme, så ingen spørsmål dukker opp.

Resultat av rammetesting

Hver seksjon har en struktur som består av to former for presentasjon av resultater.

Den første formen er en visuell type presentasjon. Hver karakteristikk inneholder 4 diagrammer. Hvert diagram viser en sammenligning mellom rammeverk, pluss et kumulativt diagram. Den ble bygget ved hjelp av en spesifikk versjon av PHP. På denne måten kan du spore utviklingen av forbedringer i PHP og rammeverk.

Den andre formen er testresultatet i form av en tabell (nok visualisering, la oss være seriøse - gi meg flere tall!).

Ytelse (gjennomstrømning)

I forhold til vår situasjon måles gjennomstrømningskarakteristikken i antall forespørsler som vårt rammeverk kan behandle i løpet av et sekund. Derfor, jo høyere dette tallet er, desto mer ytelse vil applikasjonen vår være, siden den vil være i stand til å håndtere forespørsler fra et stort antall brukere på riktig måte.

Vi fikk følgende resultater (forespørsler per sekund):

php 5,6 php 7,0 php 7.1
phalcon-3.1.2 5058.00 5130.00 7535.00
ci-3,0 2943.55 4116.31 4998.05
slank-3,0 2074.59 3143.94 3681.00
yii-2,0 1256.31 2276.37 2664.61
silex-1.3 1401.92 2263.90 2576.22
lumen-5,1 1316.46 2384.24 2741.81
ze-1,0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
drivstoff-1,8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2,5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
symfoni-2.7 360.03 873.40 989.57
symfoni-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

For klarhetens skyld bygde vi grafer for hver versjon av PHP:

PHP5.6:

PHP7.0:

PHP7.1:



Topp minne

Denne egenskapen (i megabyte) er ansvarlig for mengden minne som er okkupert av rammeverket når du utfører oppgaven som er tildelt det. Jo mindre gitt nummer, jo bedre for oss og for serveren:
php 5,6 php 7,0 php 7.1
phalcon-3.1.2 0.27 0.38 0.37
ci-3,0 0.42 0.38 0.38
slank-3,0 0.61 0.55 0.55
yii-2,0 1.31 0.91 0.91
silex-1.3 0.74 0.65 0.65
lumen-5,1 0.80 0.63 0.63
ze-1,0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
drivstoff-1,8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2,5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
symfoni-2.7 3.11 1.41 1.42
symfoni-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

* - bluz-7.3.1 støtter ikke php 5.6

PHP 5.6:

PHP 7.0:

PHP 7.1:

Sammendrag kumulativt diagram (etter rammeverk):

ledetid

Utførelsestid er tiden det tar systemet å fullføre en gitt oppgave. Det måles fra begynnelsen av oppgaven til resultatet av resultatet av systemet.

Vi så på hvor mange forespørsler per sekund rammeverket kan behandle og hvor mye minne det tar opp. La oss nå se på hvor lenge vi må vente på å motta et svar fra serveren. Jo lavere denne verdien, jo bedre for oss , og for nervesystemet klienten til vår applikasjon.

Tiden er gitt i millisekunder (ms):

php 5,6 php 7,0 php 7.1
phalcon-3.1.2 1.300 1.470 1.080
ci-3,0 0.996 0.818 1.007
slank-3,0 1.530 1.228 0.662
yii-2,0 1.478 1.410 1.639
silex-1.3 4.657 1.625 2.681
lumen-5,1 2.121 1.829 1.228
ze-1,0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
drivstoff-1,8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2,5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
symfoni-2.7 6.529 3.902 2.384
symfoni-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Sammendrag kumulativt diagram (etter rammeverk):

Inkluderte filer

En egenskap som er ansvarlig for antall inkluderte filer som er beskrevet i rammeverkets «inngangspunkt»-fil. Det er tydelig at systemet bruker litt tid på å søke og koble til. Derfor, jo færre filer, jo raskere Applikasjonen vil bli lansert for første gang, siden vanligvis i påfølgende ganger fungerer rammeverket med cachen, noe som øker hastigheten på arbeidet:
phalcon-3.1.2 5
ci-3,0 26
slank-3,0 53
yii-2,0 46
silex-1.3 63
lumen-5,1 37
ze-1,0 68
phpixie-3.2 163
drivstoff-1,8 53
bluz-7.3.1 95
zf-2,5 222
zf-3.0 188
symfoni-2.7 110
symfoni-3.0 192
laravel-5.3 38
laravel-5.4 176


Forskjellen i antall inkluderte filer mellom Laravel 5.3 og Laravel 5.4 kan virke merkelig og gi opphav til diskusjoner, tvister osv. Vi skynder oss å avklare situasjonen. Som du vet, ved å bruke kommandoen

Php artisan optimize --force

I Laravel 5.3 kan du generere en compiled.php-fil, og dermed redusere antall inkluderte filer ved å samle dem til én. Men det er ett "men": kommandoen for å generere denne filen i Laravel 5.4 er ikke lenger tilgjengelig. Utvikleren bestemte seg for å fjerne denne funksjonen fordi han mente (https://github.com/laravel/framework/pull/17003) at det var bedre å bruke opcache for å justere ytelsen.

Er det verdt å oppgradere?

Oppsummeringsdata etter versjon viser mer enn tydelig hvilken økning i produktivitet og ressurseffektivitet som vil skje når du bytter (eller først velger) til en ny versjon av PHP.

Ved overgang fra PHP 5.6 til PHP 7.0 var den gjennomsnittlige ytelsesøkningen nesten +90 %, med en minimum ytelsesøkning på +33 % for Laravel 5.3, og et maksimum på >200 % for Zend Framework 2.5.

Overgangen fra versjon 7.0 til 7.1 er ikke lenger så sjokkerende, men gir likevel i gjennomsnitt nesten 20 % økning i ytelsen.

Oppsummerer alle oppnådde ytelsesdata forskjellige versjoner PHP, vi får disse "madrassene":


Morsomt faktum: Laravel 5.3 viste den minste ytelsesøkningen ved migrering fra PHP 5.6 til PHP 7.0, men den største økningen ved migrering fra versjon 7.0 til versjon 7.1, og som et resultat er ytelsen til Laravel 5.3 og 5.4 på PHP 7.1 nesten den samme.

Minneforbruket er også optimert, så å flytte fra PHP 5.6 til PHP 7.0 vil tillate applikasjonen din å bruke 30 % mindre minne.

Oppdatering fra versjon 7.0 til versjon 7.1 gir praktisk talt ingen økning, og i siste Symfony og Laravel er vi helt i minus, fordi de begynner å "spise" litt mer.


Det gjenstår bare å se på utførelsestiden, og ja, alt er bra her også:

  • Å flytte fra PHP 5.6 til PHP 7.0 vil gi deg en gjennomsnittlig hastighetsøkning på 44 %.
  • Å flytte fra PHP 7.0 til PHP 7.1 vil gi deg ytterligere 14 % hastighet.

Merk. Testing med ab - hva vi møtte


"Hva med slim and phpixie" - dette spørsmålet førte til en undersøkelse av oppførselen til ab-verktøyet når det samhandlet med disse rammeverkene.

La oss kjøre testen separat for Slim-3.0:

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Samtidighetsnivå: 10
Tid tatt for tester: 5,005 sekunder
Fullfør forespørsler: 2
Mislykkede forespørsler: 0
Totalt overført: 1800 byte
HTML overført: 330 byte
Forespørsler per sekund: 0,40 [#/sek] (gjennomsnittlig)
Tid per forespørsel: 25024.485 (gjennomsnittlig)
Tid per forespørsel: 2502.448 (gjennomsnittlig på tvers av alle samtidige forespørsler)
Overføringsrate: 0,35 mottatt

Noe er galt - antall forespørsler per sekund er bare 0,4 (!)

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

Samtidighetsnivå: 10
Tid tatt for tester: 3,004 sekunder
Fullstendige forespørsler: 1961
Mislykkede forespørsler: 0
Totalt overført: 1995682 byte
HTML overført: 66708 byte
Forespørsler per sekund: 652,86 [#/sek] (gjennomsnittlig)
Tid per forespørsel: 15.317 (gjennomsnittlig)
Tid per forespørsel: 1,532 (gjennomsnittlig, på tvers av alle samtidige forespørsler)
Overføringsrate: 648,83 mottatt

Problemet var en Keep Alive-forbindelse, du kan finne ut mer her.

"Når du gjør forespørsler med "Connection: keep-alive" vil den påfølgende forespørselen til serveren bruke den samme TCP-tilkoblingen. Dette kalles HTTP persistent tilkobling. Dette hjelper til med å redusere CPU-belastningen på serversiden og forbedrer latens/responstid.

Hvis en forespørsel er laget med "Connection: close" indikerer dette at når forespørselen er gjort, må serveren lukke forbindelsen. Og så for hver forespørsel vil en ny TCP-tilkobling opprettes.

Som standard bruker HTTP 1.1 klient/server keep-alive, mens HTTP 1.0 klient/server ikke støtter keep-alive som standard.»


Så testen for Slim skal se slik ut:

Ab -H "Connection: close" -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Samtidighetsnivå: 10
Tid tatt for tester: 3.000 sekunder
Fullfør forespørsler: 10709
Mislykkede forespørsler: 0
Totalt overført: 2131091 byte
HTML overført: 353397 byte
Forespørsler per sekund: 3569,53 [#/sek] (gjennomsnittlig)
Tid per forespørsel: 2.801 (gjennomsnittlig)
Tid per forespørsel: 0,280 (gjennomsnittlig, på tvers av alle samtidige forespørsler)
Overføringsrate: 693,69 mottatt

Konklusjon

Som du kanskje forventer, er Phalcon den ubestridte lederen innen ytelse (men ikke utviklingshastighet). Andreplass – og faktisk først blant PHP-rammeverk (ikke C, som Phalcon-kildekoden er skrevet i) – er CodeIgniter 3!

Selvfølgelig bør vi ikke glemme at hvert instrument har sitt eget formål. Hvis du velger et lite og lett rammeverk og skal skrive noe annet enn enkle applikasjoner eller REST APIer på det, så vil du mest sannsynlig støte på problemer når du utvider funksjonaliteten. Og omvendt - redundansen av fullfunksjons, store rammeverk vil medføre økonomiske kostnader for å opprettholde hosting selv for elementære applikasjoner under stor belastning.

Denne testingen ble gjort for å overbevise/fortelle/styrke posisjonen til PHP-språkversjonene 7.0 og 7.1 i tankene dine og i fremtidige prosjekter, for å formidle budskapet om at produktiviteten faktisk har økt.

Refaktorering av interne datastrukturer og tilføyelse av et ekstra trinn før kompilering av koden til et abstrakt syntakstre (AST) resulterte i overlegen ytelse og mer effektiv minneallokering. Resultatene i seg selv ser lovende ut: tester utført på ekte applikasjoner viser at PHP 7 i gjennomsnitt er dobbelt så rask som PHP 5.6, og bruker også 50 % mindre minne under spørringsbehandling, noe som gjør PHP 7 til en sterk utfordrer for HHVM JIT-kompilatoren fra Facebook.

Tester bekrefter fullt ut både den to ganger akselererte forespørselsbehandlingen i PHP7 og den reduserte mengden minne som brukes.

PHP er det mest populære skriptspråket på serversiden i verden. Det har kommet langt fra små som er innebygd i kode statisk HTML sider, utdrag, til det moderne språket som de fleste moderne dynamiske nettsteder er utviklet på.

Men med den økende kompleksiteten og funksjonaliteten til moderne nettsider, er det behov for å strukturere og organisere selve utviklingsprosessen. OG PHP-rammeverk ble den mest naturlige løsningen på dette problemet.

Hvorfor bruke rammeverket
Men før vi begynner å gjennomgå de 10 rammeverkene som vi har nøye utvalgt og nøye analysert for deg, la oss forklare hva de faktisk trengs til og hvilke fordeler de gir.
Saken er at bruk av rammer:
  • Reduserer utviklingstiden betydelig
  • Lar deg skrive godt strukturert, godt dokumentert og gjenbrukbar kode
  • Lar deg lage skalerbare, lett utvidbare applikasjoner
  • Skjuler for utvikleren behovet for å ta vare på sikkerhet på lavt nivå
  • Oppmuntrer MVC-design (Model-View-Controller) for å skille applikasjonslogikk og datapresentasjon
  • Fremmer bruken av moderne programmeringsmetoder, primært objektorienterte.

Laravel

Til tross for sin ungdom (den første utgivelsen ble utgitt i 2011), er det allerede et helt modent produkt, og ifølge en undersøkelse utført av SitePoint-portalen rangerer det først i popularitet blant PHP-utviklere.

Laravel er et enormt økosystem som inkluderer hosting og en plattform for distribusjon av applikasjoner. Den har sin egen «Blade»-handler, en elegant syntaks som forenkler rutineoperasjoner som øktadministrasjon, køhåndtering, caching og ruting. I tillegg inkluderer Laravel det lokale utviklingsmiljøet Homestead, som er en del av Vagrant-pakken.

Vi bruker jevnlig Laravel i våre prosjekter. En stor fordel er at det finnes en nettside hvor nesten all teknisk dokumentasjon er oversatt.

Symfoni

Rammekomponenter Symfoni 2 de bruker så velkjente prosjekter som Drupal og phpBB, og til og med Laravel, diskutert ovenfor. Symfony er utviklet av et stort fellesskap av utviklere og har en enorm tilhengerskare.

Symfony-komponenter- dette er et sett PHP-biblioteker, i stand til å tilfredsstille en rekke utviklerbehov, det være seg formoppretting, ruting, autorisasjon, utvikling og mye mer. Utviklernes nettsted har en imponerende portefølje av prosjekter fullført ved hjelp av dette rammeverket.

CodeIgniter

Et lett rammeverk med en lang historie (den første utgivelsen ble utgitt i 2006). Dens tradisjonelle funksjon er den ekstremt enkle og raske installasjonsprosessen, og det nesten fullstendige fraværet av behov for konfigurasjon. Dette er et ideelt valg hvis du vil unngå versjonskonflikter, siden det fungerer på nesten alle tilgjengelige plattformer (krever for øyeblikket bare PHP 5.2.4)

CodeIgniter følger ikke fullt ut MVC-paradigmet – mens kontrolllaget er obligatorisk, er modell- og visningslagene valgfrie. Utvikleren kan bruke sine egne kodingsregler og navnekonvensjoner, noe som absolutt gir ham mer frihet. Kjernen i rammeverket er liten (ca. 2MB), men funksjonaliteten kan utvides ved hjelp av plugins fra andre utviklere.

Yii 2

Yii 2 bruker aktivt konseptet "lat" (eller "forsinket") lasting, noe som gjør det til en av de mest rask PHP rammer. Bruker en objektorientert tilnærming og DRY (Don't Repeat Yourself)-konseptet og lar deg lage tydelig og lettlest kode.

Yii 2 er tett integrert med jQuery, inneholder et sett med funksjoner og en innebygd mekanisme for skins og temaer, så den er ideell for programmerere og frontend-utviklere. I tillegg inkluderer Yii 2 et så kraftig verktøy som Gii-kodegeneratoren, som lar deg forenkle rutineoperasjoner når du utvikler et prosjekt.

Phalcon

Dette rammeverket dukket først opp i 2012 og ble raskt populær blant utviklere. Den oppnår den høyeste ytelsen på grunn av det skrevet i C/C++, som gjenspeiles i navnet (Phalcon er konsonant med den engelske falken - falk). Men ikke bekymre deg - du trenger ikke å dykke ned i C/C++, fordi alle funksjonalitet er implementert i form av PHP-klasser.

Phalcon er ganske godt optimert på kjernenivå, noe som øker ytelsen betydelig og reduserer belastningen sammenlignet med vanlig MVC-applikasjoner, og dens grunnleggende funksjonalitet er supplert med mange nyttige tillegg, for eksempel en universell autoloader, en ressursbehandling, en hurtigbuffer- og lokaliseringsmekanisme og mange andre. Phalcon kommer også med utmerket dokumentasjon, så det er absolutt verdt et forsøk.

KakePHP

Utviklingshistorien til CakePHP går 10 år tilbake (den første utgivelsen ble utgitt i 2005), men den er fortsatt veldig populær fordi den utvikler seg aktivt og følger med tiden. Den siste versjonen av dette rammeverket, CakePHP 3.0, inneholder en redesignet øktbehandling, forbedret modularitet ved å separere noen komponenter og muligheten til å lage uavhengige biblioteker.

hjemmeside Prosjektet presenterer en imponerende portefølje av dette rammeverket - med dets hjelp ble nettsider til så store selskaper som BMW, Hyundai og Express opprettet. Dette flott verktøyå utvikle applikasjoner først og fremst på sikkerhet. Validering av inngangsdata, beskyttelse mot SQL-injeksjon, cross-site scripting (XSS), cross-site request forgery (CSRF) - alt dette er tilstede i CakePHP

Zend Framework

Zend er et kraftig og stabilt PHP-rammeverk som er svært tilpassbart, så det anbefales generelt ikke for små prosjekter. Zends partnere inkluderer dataindustrigiganter som IBM, Microsoft, Google og Adobe. Den kommende Zend Framework-utgivelsen nummer 3 vil bli optimalisert for PHP 7, men beholdes PHP-støtte 5.5.

Den nåværende utgivelsen av Zend Framework 2 har imidlertid mange flotte funksjoner, for eksempel krypteringsverktøy, en praktisk editor som støtter medisin- og drop- og front-end-teknologier (HTML, JavaScript), en fullverdig nettsøker, moduler for testing og tilkobling til databaser. Zend Framework ble bygget med Agile-utviklingsmetodikken i tankene og er designet for å utvikle applikasjoner i bedriftskvalitet av høy kvalitet.

Slank

Slim er et PHP-mikrorammeverk laget i henhold til prinsippet «den har alt du trenger. Hvis det mangler noe i det, så trenger du det ikke." Et minimalistisk rammeverk, godt egnet for å lage små applikasjoner der bruk av et fullverdig rammeverk ville være overkill. Forfatteren ble inspirert til å lage den av Sinatra-rammeverket skrevet i Ruby.

Slim er mye brukt av utviklere for å lage RESTful APIer og tjenester. Den har funksjoner som URL-ruting, cachebehandling på klientsiden, kryptering av informasjonskapsler og økter, og støtte for flash-meldinger via HTTP-forespørsel. Slim har utmerket dokumentasjon og nye funksjoner er lagt til den kommende tredje utgivelsen av Slim.

DrivstoffPHP

FuelPHP er et fleksibelt og multifunksjonelt PHP-rammeverk som støtter HMVC (Hierarchical Model-View-Controller) paradigmet, som er videre utvikling MVC-modeller. Den har en ekstra Presenter-klasse (tidligere kalt ViewModel) som kobler sammen Controller- og View-klassene, og er ansvarlig for logikken som kreves for å generere View.

Takket være sin modulære arkitektur er FuelPHP enkelt å utvide, har nyttige funksjoner som input og URL-filtrering, kryptering, og inneholder sitt eget autentiseringsrammeverk med sine egne flotte funksjoner og detaljert dokumentasjon.

PHPixie

PHPixie er et relativt nytt rammeverk med høy ytelse, utviklet siden 2012, designet for å lage enkle nettsteder. I likhet med FuelPHP følger PHPixie HMVC-paradigmet og er bygget ved hjelp av uavhengige komponenter som også kan brukes uavhengig utenfor rammeverket.

På den offisielle nettsiden kan du finne et kurs som, ifølge utviklerne, lar deg mestre PHPixie på bare 30 minutter. Andre komponenter i rammeverket inkluderer sin egen ORM (object-relational mapping), en caching-mekanisme, en inngangsdatavalidator, et autorisasjonssystem, et innebygd HAML-markeringsspråk og en fantastisk rutingmodul.

En serie artikler dedikert til rammeverk for utvikling av webapplikasjoner er publisert. Disse materialene undersøkte nemlig plattformene Angular 2+, React + Redux, Vue.js, Dojo 2, Ember og Aurelia.

Å utvikle webapplikasjoner uten å bruke rammeverk er delvis en avtale om å følge disse plattformene og ikke dra nytte av arbeidet til rammeverksutviklingsteamene, som ofte jobber tett med nettleserprodusentene. Faktisk ser det ut til at en utvikler som nekter rammeverk å si om nettteknologier: "Jeg kan temme dette villdyret."

La oss anta at du har nok erfaring og ferdigheter til å faktisk klare deg uten rammer. Hva med resten av teamet ditt, eller hvem som kommer etter deg? Eller kanskje du er overbevist om at beslutningene du tar nå alltid vil være relevante? Vi har sett team ta på seg utvikling uten å bruke rammer. Etter en stund fant de seg selv i å utvikle sine egne rammer, som de trengte for å vedlikeholde selv. I slike team vokser søkekravene til nye medarbeidere, for i stedet for å lete etter folk som kjenner til bestemte rammer, må de finne noen som er svært godt bevandret i nettplattformens API. Dessuten trenger ansatte i slike prosjekter virkelig dyp kunnskap, ellers vil det ikke være noen fordel av dem.

Fallgruven å unngå her er at alle moderne selskaper ser ut til å ha de samme egenskapene. Selvfølgelig er det organisasjoner der innovasjon i bruk og anvendelse av webteknologi øker deres markedslevedyktighet. For eksempel – Google, Facebook og Netflix. Dette er ikke tilfelle for de fleste bedrifter, og de bør akseptere dette.

Angular 2+

▍Styrker

Den største fordelen med Angular 2+ er dens popularitet. Vi kan si at navnet på Google-selskapet er knyttet til det, og dette påvirker hvordan det oppfattes. Angular 1 ble raskt populær da de som kom fra andre utviklingsmiljøer fant det et kjent MVC-mønster for å lage enkeltsidesapplikasjoner. Etter å ha modernisert Angular 1 og redesignet noen deler av rammeverket, tok Angular 2+ bokstavelig talt fart. Antallet treninger på den, offisielle og uoffisielle, er imponerende. Det er et seriøst behov for Angular-utviklere i markedet. Det er også et av få rammeverk som diskuteres i denne artikkelen som har et formelt sett med funksjonsrike komponenter for å lage brukergrensesnitt.

Vi mener at Angular er fokusert på å lage brukergrensesnitt for enkeltsideapplikasjoner og ikke oppfyller behovene til utviklere på større prosjekter. Dette kan gjøre prosjekter vanskelige å vedlikeholde dersom de underliggende prinsippene de bygger på ikke er klart uttrykt i starten av utviklingen. I praksis må utviklere ty til mirakler av oppfinnsomhet for å få en Angular-applikasjon til å gjøre noe som ikke er en del av rammeverket. Dette reduserer i tillegg utviklernes interesse for TypeScript, som rammeverket er skrevet i.

▍ Framtiden til rammeverket

Angular 5 ble nylig utgitt og det føles som om Angular-teamet holder tritt med en veldig travel utgivelsesplan. Det ser ut til at Angular vil fortsette å utvikle seg takket være Googles fortsatte støtte.

Som enhver stor organisasjon har Google mange mennesker. Fra utsiden ser samspillet mellom de som jobber med Angular og de som jobber med å implementere nettstandarder i nettleseren harmonisk ut. Vi tror at denne harmonien faktisk bare er et utseende, og at Angular i virkeligheten ikke gir et effektivt middel til å bruke webkomponenter og lage progressive webapplikasjoner. Etter vår mening vil standardene vedtatt av webutviklingsindustrien fortrenge noen av tilnærmingene som brukes i Angular. Som et resultat kan vi på mellomlang til lang sikt møte innvirkningen av standarder på hvordan Angular-applikasjoner vil bli bygget og designet. Dette medfører en viss risiko.

▍Hvorfor velge Angular 2+?

Hvis du trenger rammespesialister for å være enkle å finne i kvantitet og slik at kunnskapen deres kan brukes på andre områder, eller du trenger å forberede et team til å jobbe med rammeverket og du har en viss grad av tillit til at teamet kan, V kort tid, gå til produktivitet, kan du stoppe ved Angular 2+. Vær imidlertid oppmerksom på at Angular 1 (Angular.js) er veldig forskjellig fra den moderne versjonen av rammeverket, og applikasjoner, så vel som ferdighetene og erfaringene til utviklere, kan ikke overføres direkte til Angular 2+.

Hvis nettapplikasjonsarkitekturen din følger MVC-mønsteret, kan du også vurdere Angular 2+.

Hvis du liker tilnærmingen Google design Material UX, da er Angular Material komponentsettet en rask, enkel og pålitelig måte å dra nytte av alt dette.

Reager + Redux

▍Styrker

Den største fordelen med React og Redux er deres komparative enkelhet og det faktum at de er rettet mot å løse én oppgave, utvikle grensesnitt. Hvis du satser på å finne noe som gjør én ting, men gjør det bra, kan du si at begge bibliotekene gjør det de forventes å gjøre veldig bra. Selv om tilstandsbeholdertilnærmingen kan virke ukjent for noen, kan de fleste utviklere lett forstå konseptet og forstå fordelene med en enveis dataflytarkitektur og hvordan denne tilnærmingen kan forenkle komplekse applikasjoner.brukergrensesnitt.

▍Svakheter og mulige vanskeligheter under implementering

De største ulempene med React og Redux ligger ikke i den spesifikke implementeringen av hva de kan gjøre, men i hva de ikke kan. For å lage en kompleks nettapplikasjon trenger du mange andre teknologier. Når du kommer utover kjernefunksjonaliteten til React, Redux og et par andre biblioteker, vil du bli møtt med mange meninger om de "riktige verktøyene", med utallige løsninger og mønstre som noen ganger er enkle å integrere i en applikasjon, og noen ganger ikke.

Så siden React og Redux er biblioteker som fokuserer på å løse et smalt utvalg av spesialiserte problemer, kan uerfarne team veldig lett bygge noe ustøttet på toppen av dem, uten å vite at beslutningene de tar fører til dårlig ytelse av webapplikasjoner eller til feil. Selv erfarne utbyggere kan oppleve at mangel på tydelig arkitektonisk planlegging for en løsning eller strenge regler i starten av utbygging kan få svært ubehagelige konsekvenser for prosjektet i fremtiden.

Det er lett å bli lurt av de opplevde tids- og ressursbesparelsene at bruk av React og Redux på tvers av organisasjonen din vil redusere. Uten nøye utformede konvensjoner og standardisering av andre biblioteker og mønstre, er flytting til React og Redux som å si: "Vi går over til JavaScript for å skrive apper og være mer effektive."

▍ Framtiden til rammeverket

Facebook og React-utviklerne har først nylig begynt å lytte til fellesskapet. Vi tror dette hjalp Facebook til å innse at selskapet ikke lenger kunne operere etter prinsippene «Vi bedre utviklere vi vet hva de trenger» og: «Tro på vår tilnærming» i utviklingen av deres prosjekter. Jeg vil gjerne håpe at denne bevegelsen vil fortsette, og påvirke evnene og retningen for utviklingen av React og relaterte prosjekter.

Når man ser på React og Redux, er det vanskelig å forutsi fremtiden. Imidlertid har den høyt spesialiserte naturen til disse bibliotekene i stor grad økt bruken av dem, med de fleste React + Redux-maler som fremmer en frakoblet arkitektur som fremmer enkel refaktorisering og enkel å ta i bruk en iterativ tilnærming til utvikling. For et par år siden snakket alle om React + Flux, men utviklerfellesskapet tok raskt i bruk Redux. Det er sannsynlig at andre store endringer i driftsmodeller eller mønstre kan tas i bruk like enkelt. Vi vil nok møte denne lettheten i å oppfatte nye ting i fremtiden.

▍Hvorfor velge React + Redux?

Hvis du er i en situasjon der du ser etter gode biblioteker i stedet for et altomfattende rammeverk, kan React + Redux passe godt. I tillegg bør du være realistisk om evnene til teamet og organisasjonen, ikke bare i det innledende utviklingsstadiet, men også ta hensyn til den langsiktige støtten til applikasjonen.

Vue.js

▍Styrker

Sannsynligvis er den største fordelen med dette rammeverket muligheten for gradvis implementering. Vue har en klar, strømlinjeformet arkitektur som er lett å lære og lett å sette ut i livet.

Det er et sammensveiset fellesskap av entusiaster og tredjepartsprosjekter som gjør Vue.js enda mer interessant. I tillegg er det ganske enkelt å kombinere ulike Vue-orienterte utviklinger til mer komplekse løsninger når man lager nye prosjekter.

▍Svakheter og mulige vanskeligheter under implementering

Det kan være forvirrende å sjonglere mellom ideene til applikasjoner basert på MVC-mønsteret og applikasjoner basert på statlige beholdere. Det virker som rammeutviklerne har et ønske om å gjøre alt bra, uten å gi en fordel til ett applikasjonsutviklingsmønster fremfor et annet. Vi føler at dette i det minste er forvirrende for de som ser på Vue.js som en plattform for en fullverdig nettløsning, og kan føre til at forskjellige maler brukes, noe som til slutt gjør applikasjonen vanskeligere å vedlikeholde.

Et av hovedproblemene med Vue.js er at prosjektet er avhengig av én person. Det er klart at andre rammer også er avhengige av noen, men som regel er dette organisasjoner. Det er et stort fellesskap rundt Vue.js, med mange innovative spin-off-prosjekter, men kjerneutvikling faller helt på skuldrene til en enkelt utvikler.

Vi synes det ville vært fint å se Vue.js integrere nye standarder, men akkurat nå ser vi det som noe av en webkomponentmal, men ikke webkomponentene i seg selv, noe som betyr at det handler mer om planer om å implementere nye teknologier i stedet for det som allerede har vært. implementert.

▍ Framtiden til rammeverket

Selv om Vue.js er mye brukt og brukt i ulike prosjekter, er det vanskelig å forutsi hva som vil skje med rammeverket på mellomlang sikt. Den støttes ikke direkte av kommersielle organisasjoner, så utviklingen avhenger i stor grad av utviklernes ønsker og evner.

Rammeverket viste et visst nivå av evne til å tilpasse seg og gå over til nye tilnærminger i utviklingen etter at noen mønstre enten ble populære eller mistet betydning. Vue er fortsatt moderne og relevant. Det er imidlertid ingen tegn på at Vue.js-arkitekturen ikke vil være i stand til å tilpasse seg fremveksten av noe som ingen vet om ennå.

▍Hvorfor velge Vue.js?

Hvis du har en eldre nettapplikasjon som trenger en mer pålitelig og moderne motor, så kan Vue.js godt passe for deg. Den har klare mønstre, og selv om utviklingsteamet ikke er særlig erfarent, vil det enkelt kunne skille de riktige tilnærmingene fra de gale. Selv om Vue ikke har en klar til bruk standard bibliotek grensesnittelementer, er det mange tredjepartsrammeverk basert på Vue som kan passe for deg.

Dojo 2

▍Styrker

Dojo fyller mange av hullene som finnes i noe som React + Redux. Poenget er at skaperne prøver å skape et helhetlig utviklingsmiljø basert på et mønster av reaktive komponenter bygget på en statlig containerarkitektur.
Ved utviklingen av Dojo 2 ble det tatt i betraktning at den ikke eksisterer i et "vakuum av plass". Den inkluderer muligheten til å importere og eksportere webkomponenter og er bygget med hensyn til de ulike brukstilfellene som må støttes, men samtidig gir den mulighetene til et strukturert rammeverk med visse funksjoner. I tillegg, i hovedfunksjonaliteten til Dojo 2, er det lagt stor vekt på modulariteten til plattformkomponenter.

Dojo 2 gir løsninger for mange vanlige problemer, og funksjoner som er viktige for fullskala webapplikasjoner som ikke vies mye oppmerksomhet i de fleste andre rammeverk. Spesielt er det et internasjonaliseringssystem og maler for å sikre applikasjonstilgjengelighet. Det er også temastøtte og maler som fokuserer på aspekter ved utvikling utover TypeScript/JavaScript, for eksempel arbeid med ressurser som CSS.

Dojo 2 har som mål å tilby et strukturert utviklingsmiljø som er programmerervennlig. Gjennom bruk av TypeScript og ulike maler prøver den å gi utviklere noe av en guide for å veilede dem på veien produktivt arbeid, men begrenser samtidig ikke de som vet nøyaktig hva de gjør. Rammeverket er fokusert på å gjøre utviklingen mer produktiv og sikker. Målet er å styrke utviklingsteam til å raskt lage bedre webapplikasjoner.

▍Svakheter og mulige vanskeligheter under implementering

Prosjektet er under utvikling, det har pågått lenge, noe som bremser utviklingen av Dojo 2. Det finnes blant mange andre, mer snevert fokuserte rammeverk, hvor utviklerne på grunn av spesialisering er kan raskt gi ut nye utgivelser.

Problemet kan være at ønsket om fleksibilitet, for utskiftbarhet av komponenter, kan sette spørsmålstegn ved selve eksistensgrunnlaget til Dojo 2, uten å gi noen klar grunn til å bruke den.

▍ Framtiden til rammeverket

Fremtiden til Dojo 2 avhenger av ham selv. Utviklerne vil sannsynligvis fortsette å prøve å gi klare mønstre og retningslinjer for å bygge store webapplikasjoner. Etter hvert som standardene utvikler seg, vil skaperne av Dojo 2 strebe etter å inkludere dem i rammeverket og integrere dem i mekanismene. Mest sannsynlig vil Dojo 2 strebe etter åpenhet og modularitet, mens utviklingsteamet ikke kan unngå å forstå at de neppe vil skape universell løsning, som alltid kan møte behovene til alle prosjekter.

▍Hvorfor velge Dojo 2?

Hvis du ønsker å lære en fleksibel og moderne reaktiv nettapplikasjonsarkitektur, men ønsker smarte, standard problemløsningsløsninger til fingerspissene, så er Dojo 2 et godt valg. I stedet for å sette sammen alt fra forskjellige deler og komme opp med noen regler for prosjektet ditt, kan du fokusere på å utvikle funksjonalitet og være trygg på at det du ender opp med mest sannsynlig vil være klart for produksjon. I tillegg er Dojo 2 egnet for de som setter stor pris på egenskapene til TypeScript.

Glør

▍Styrker

Kanskje Ember.js er det mest strengt organiserte rammeverket som har blitt utbredt. Dette er dens viktigste fordel. Når du utvikler prosjekter på Ember, er det veldig spesifikke de riktige måtene gjøre noe som vanligvis er det eneste mulige. Ember er mer som en plattform, et produkt du kan forvente langsiktig støtte og service fra. Ember.js tilbyr avansert versjonering av plattformen, verktøy for migrering til nye versjoner, og klare guider og verktøy for å omgå eldre APIer. Kanskje Ember har det all rett kalles et modent rammeverk.

Gjennom årene har Ember.js vist at teamet deres kan støtte rammeverket og integrere moderne standarder i det på en riktig måte, men samtidig ikke forlate eldre nettlesere.

Ember har en klar og strømlinjeformet arkitektur som er egnet for å utvikle komplekse webapplikasjoner.

▍Svakheter og mulige vanskeligheter under implementering

Den største ulempen med Ember er den samme som dens største fordel. Vi snakker om den stive strukturen til prosjekter opprettet ved hjelp av den. Selv om fellesskapet er åpent og vennlig for forslag for å forbedre Ember, er det alltid en korrekt rekkefølge av handlinger foreskrevet av selve rammeverkets arkitektur når man utvikler prosjekter på dette rammeverket. Å gå til side kan føre til problemer.

Visse vanskeligheter kan også være forårsaket av det faktum at det ikke finnes et standard sett med brukergrensesnittelementer, så du må bruke slike sett fra tredjepartsutviklere. Det kan også virke upraktisk at disse settene ikke kan kalles omfattende, manglende komponenter du må søke eller lage den selv. Siden Ember.js ikke regulerer hvordan det samhandler med DOM, kan du komme i en situasjon der prosjektet ditt har heterogene komponenter som utgjør brukergrensesnittet, noe som ikke er veldig enkelt å administrere.

▍ Framtiden til rammeverket

Hovedbidragsyterne til Embers utvikling er også medlemmer av TC39-komiteen, som er ansvarlig for standardisering av JavaScript. Ember.js har hatt større innvirkning på JavaScript enn noe annet rammeverk de siste årene. Vi tror dette vil fortsette i fremtiden, og bidra til å utvikle JavaScript-funksjoner og -mønstre. Dette betyr også god støtte for fremtidige standarder i Ember.js.

Ember.js vil neppe forsvinne med det første, selv om innovasjon i økosystemet sannsynligvis vil komme fra andre relaterte prosjekter som Glimmer, som er et TypeScript-basert rammeverk for å bygge brukergrensesnitt for Ember.js-applikasjoner.

▍Hvorfor velge Ember.js?

Hvis du leter etter et modent, etablert rammeverk, kan du ikke gå galt med Ember.js. I tillegg, siden Ember er basert på enkle og greie mekanismer og det er mye offisiell og offisielt godkjent opplæring, på grunn av at den er basert på et rigid design, er det sannsynligvis enklere å finne utviklere som kan lage Ember-applikasjoner enn i tilfelle av andre rammer. Det er også fullt mulig å lære opp store team i hvordan man kan utvikle slike applikasjoner og sikre effektivt samarbeid innen slike team.

Hvis du vil at organisasjonen din skal være trygg på at teknologiene den velger alltid vil være oppdatert, og er på vakt mot potensielle endringer på plattformer, så er Ember også et godt valg. I stedet for å bekymre deg for at din tidligere valgte plattform vil bli utdatert eller endre seg til det ugjenkjennelige, kan du ganske enkelt utvikle applikasjonene dine.

Aurelia

▍Styrker

Aurelia gjør mange ting riktig: utviklingstilnærmingen, rammestrukturen og metodikken for å lage webapplikasjoner. Rammeverket bruker mange flotte teknikker. Dette er en oppdatert plattform som bruker moderne teknologi.

▍Svakheter og mulige vanskeligheter under implementering

Vi tror at hovedproblemet knyttet til Aurelia er mangelen på utviklere involvert i kjernefunksjonaliteten til rammeverket. Det føles som om det er mange ideer og konsepter her som er designet for å løse de viktigste manglene ved eksisterende rammeverk, men det virker ikke helt komplett. Aurelia ser ut til å være under utvikling, som Dojo 2, men i dette tilfellet snakker vi om et rammeverk som har status som et ferdig produkt.

Store mengder arbeid på Aurelia utføres av en enkelt utbygger, noe som betyr at dersom han ikke kan vie nok tid til prosjektet eller bestemmer seg for å radikalt endre noe i det, kan de som har valgt denne rammen for langsiktige prosjekter få problemer.

▍ Framtiden til rammeverket

Aurelia har mange alternativer. Hvis dette rammeverket forblir tro mot de underliggende prinsippene, vil det beholde webutviklingsmønstrene finjustert i Angular, men vil gi dem i en mer standardisert og raffinert form. Vi vet imidlertid ikke om Aurelia vil utvikle seg i denne retningen.

▍Hvorfor velge Aurelia?

Hvis MVC-malen er nær deg, og du eller teamet ditt ønsker å jobbe for kvalitet og resultater, bør du se nærmere på Aurelia. Det er imidlertid verdt å merke seg at dette rammeverket mangler et større fellesskap som kan bidra til utvikling og utvikling.

Resultater

Vi håper dette materialet har gitt deg stoff til ettertanke. Kanskje hovedtanken som kan hentes fra det er at det ikke er garantert riktige og garantert gale beslutninger ved valg av rammeverk. I tillegg håper vi at du gjennom denne artikkelen vil være i stand til å formulere et sett med krav som vil hjelpe deg å velge riktig rammeverk.

Et rammeverk er bare legemliggjørelsen av visse maler, et integrert sett med visse teknologier og kode som letter utviklingen og støtten til webapplikasjoner. Hvis du er en selvutvikler, er det beste rådet vi kan gi å prøve så mange rammer du kan som virker riktig for deg. Hvis du er en leder eller arkitekt som prøver å ta en avgjørelse, husk at et rammeverks funksjonsliste er bare ett av dets egenskaper, og noen ganger er ikke flere bedre. Sett deg for å gjøre en omfattende gjennomgang av rammeverket, involver et utviklingsteam, men lag først en liste over hva som er viktig for deg og din organisasjon, spesielt hva som går utover de tekniske spesifikasjonene.
Dojo 2 Legg til tagger

Valget er for stort, og å velge riktig rammeverk har blitt ganske problematisk. Som mange andre utviklere kan blikket ditt falle på de populære, velprøvde og pålitelige rammene Bootstrap og Foundation. Imidlertid kan nyere, mindre kjente rammeverk være mye bedre tilpasset dine behov. Under slike forhold trenger du ganske enkelt å forstå de mest populære rammeverkene i dag.

Hva du skal se etter når du velger et front-end-rammeverk

Før du leter etter et front-end-rammeverk for ditt neste prosjekt, er det veldig viktig å gjøre deg kjent med de kuleste funksjonene. Når du kjenner dem, vil du kunne veie alle fordeler og ulemper ved de mest populære front-end-rammeverket mye raskere:

Nivået ditt – vurder kunnskapsnivået ditt når du velger et front-end-rammeverk. Hvis du er nybegynner, vil du kanskje vurdere det robuste Bootstrap-rammeverket, som har mange innebygde widgets og krever minimale kodeferdigheter. Er du en mer avansert utvikler, så vil et enklere rammeverk passe deg, som vil gi deg mer rom for tilpasning. Slike rammeverk er mer kompakte og har mindre kode, noe som bare vil være et pluss.

Responsivt design – ethvert nettsted du utvikler bør vises godt på alle enheter, siden alt flere mennesker tilgang til Internett via mobile enheter. Similar Web ga ut en 2015 State of the Mobile Internet in United States-rapport, som fant at 56 prosent av de beste amerikanske nettstedtrafikkene forbrukerne får tilgang til Internett fra en mobilenhet. Se etter front-end-rammeverk som støtter responsiv design, så har du ett problem mindre.

JavaScript. Rask start

Lær det grunnleggende om JavaScript med et praktisk eksempel på hvordan du lager en nettapplikasjon.

CSS-forprosessorer – Hvis du bruker CSS-forprosessorer, for eksempel Sass eller LESS, må du kontrollere at de er kompatible med rammeverket.

Utseende – Velg et rammeverk som lar deg oppnå et flott utseende med minst mulig innsats.

Prototyping – Det ideelle front-end-rammeverket lar deg raskt lage wireframes og prototyper for å fremskynde design- og utviklingsprosessen.

Og viktigst av alt: et godt front-end-rammeverk forenkler, moderniserer og fremskynder prosessen med webdesign og utvikling, samtidig som det gir deg fleksibiliteten og funksjonaliteten til å lage unikt produkt.

Uten unødvendige ord Jeg presenterer for deg det åttende mest populære front-end-rammeverket i 2016.

Støvelhempe

TOPPEN ville være ufullstendig uten det veldig populære front-end-rammeverket Bootstrap. Forfatterne av rammeverket er skaperne av Twitter, som ga det ut i 2011. Det mest brukte rammeverket med åpen kildekode i verden.

Som alle andre effektive front-end-rammeverk inkluderer Bootstrap HTML-, CSS- og JS-komponenter. Rammeverket overholder standarder for responsiv webdesign, slik at du kan lage responsive nettsteder av enhver kompleksitet og størrelse.

Stadige oppdateringer Bootstrap sikrer at du får de nyeste og beste funksjonene. For eksempel ble nesten umiddelbart temaer som oppfylte standardene lagt til rammeverket materialdesign fra Google. Temaer er forbedret for å støtte Sass.

støtte for responsiv webdesign (kan deaktiveres om ønskelig);

omfattende dokumentasjon.

sjelden brukte stiler øker vekten av standardrammeverket til 276 KB;

Det er for mange HTML-klasser og DOM-elementer, noe som forurenser koden og forvirrer brukeren.

Passer for nybegynnere og de som foretrekker pålitelige front-end-rammeverk.

Det er ingen låste stiler, noe som gir deg mer fleksibilitet;

i stedet for piksler, brukes REM-måleenheter, som lar deg ikke eksplisitt angi bredde, høyde og andre attributter for hver enhet.

Ganske stor vekt av filer som standard;

litt komplisert for nybegynnere.

Egnet for utviklere med anstendig erfaring, hvis hovedoppgave er rask utvikling, attraktive og responsive nettsider.

materialisere seg

Pure-rammeverket ble laget av Yahoos utviklingsteam. Leveres med en lett rekke CSS-moduler, som passer for ethvert prosjekt. Med Pure kan du enkelt lage responsive knapper, menyer, rutenett, tabeller osv. Rammeverket er skrevet inn ren CSS og støtter ikke JS- eller JQuery-plugins.

Etter minifisering og komprimering via Gzip, komprimeres Pure-rammeverket til 4,5Kb, noe som gjør det til et av de letteste og mest responsive frontend-rammeverket. Pure er ideell for mobil utvikling, som er grunnen til at det tiltrakk seg mange utviklere.

veldig lett, noe som sikrer rask lasting selv på mobile enheter;

et fleksibelt utvalg av CSS-moduler kan brukes i absolutt alle design og prosjekter.

skrevet i CSS uten støtte for JS eller JQuery plugins.

Passer for utviklere som fokuserer på å lage responsive og raske mobilsider.

Skjelett

Skeleton er en lett responsiv mal med bare 400 linjer med kode. Rammeverket inkluderer minimum nødvendig funksjonalitet for å starte utvikling. I motsetning til rammeverket beskrevet ovenfor, er ikke dette en helhetlig løsning.

Skeleton er et responsivt rammeverk basert på et 12-kolonne rutenett. Settet inneholder bare de nødvendige elementene: knapper, lister, tabeller, skjemaer, etc.

veldig lett;

enkelhet og bekvemmelighet for å skrive små prosjekter.

mangel på et bredt utvalg av komponenter, i motsetning til store rammer.

Passer for de som lager små prosjekter som ikke trenger alle stylingkomponentene som finnes i store rammer.

UIKit

UIKit er et svært modulært front-end-rammeverk som skiller seg ut fra mengden av en rekke årsaker. hovedårsaken– tilstedeværelsen av to forprosessorer, LESS og Sass.

Takket være de fleksible og responsive komponentene med klare navn, har UIKit blitt et av de mest populære frontend-rammeverkene.

De 30 modulære komponentene gjør rammeverket enda mer allsidig. Blant komponentene: menyer, HTML-skjemaer og tabeller, JS-komponenter, for eksempel skyvefaner og modale vinduer, vanlige elementer som knapper, skilt og overleggslag, og layoutkomponenter som flytende, responsive rutenettsystemer.

høy tilpasning;

en unik modulær struktur som lar deg legge til komponenter til stiler uten å påvirke de generelle stilene;

muligheten til å lage komplekse grensesnitt takket være komponenter som nestede lister.

Rammeverket er fortsatt nytt, det er svært få ressurser på det på Internett.

Egnet for ganske erfarne utviklere, siden det for øyeblikket er svært lite informasjon om rammeverket. Flott for å lage både enkle og komplekse prosjekter.

Milligram

Milligram er et annet lett rammeverk som ligner på Skeleton. Etter komprimering via Gzip når filstørrelsen 2KB, noe som gir utviklere en enkel og praktisk start.

Milligrams rutenettsystem er forskjellig fra de fleste fordi det bruker CSS-standard Fleksibel bokslayoutmodul. Det er også inkludert et par nøkkelkomponenter for å hjelpe deg i gang, inkludert fonter, knapper, skjemaer, lister, tabeller, sitater og mer.

veldig lett, bare 2Kb etter komprimering via Gzip;

bruker Flexbox-gittersystemet.

rammeverket er ganske nytt, det er svært lite informasjon om det;

minimalt antall stilkomponenter sammenlignet med større rammer.

Egnet for utviklere som lager små prosjekter som ikke trenger mange stylingkomponenter, og for utviklere som ønsker å bruke Flexbox.

Susy

Noen vil si at Susy ikke akkurat er et front-end-rammeverk, siden det løser komplekse layoutproblemer. Faktisk er det mange som ser på Susy som et nettsystem, men det kan bli det et uunnværlig verktøy for folk som jobber med oppsett.

Susy utstyrer deg med mixins som du kan bruke til å lage mesh. Rammeverket gjør alle beregningene for deg, noe som sparer mye tid og krefter.

Susy lar deg lage nett av enhver kompleksitet. Hvis du prøvde å løse problemet med å lage komplekst system grids, vil Susy hjelpe deg.

økt fleksibilitet lar deg lage nett av enhver kompleksitet;

automatiske beregninger.

dekker ikke alle nettstedsdesignproblemer, som vil kreve et annet rammeverk;

ingen innebygde rutenett.

Egnet for utviklere med unike designutfordringer.

Statistikk på front-end-rammeverk

Avgjørelsen din bør ikke være basert på populariteten til rammeverket. Rammene må velges ut fra utviklingsbehov. Likevel er det interessant hvordan alle disse rammene vil rangere i rangeringen. Listen nedenfor viser hvor mange stjerner hvert prosjekt har mottatt på GitGub i skrivende stund (fra mest populær til minst populær).

Bootstrap: 101 433 stjerner

Semantisk brukergrensesnitt: 28 170 stjerner

Fundament: 24 127 stjerner

Materiale: 21 515 stjerner

Materiale UI: 19 631 stjerner

Ren: 14 967 stjerner

Skjelett: 12 622 stjerner

UIKit: 7 433 stjerner

Milligram: 4.195 stjerner

Susy: 3506 stjerner

I tillegg, i en sammenligning av TOP 5 front-end-rammeverkene på Google Trends, er det klart at Bootstrap fortsatt ligger hode og skuldre foran sine konkurrenter når det gjelder antall omtaler.

Konklusjon

Som du kan se, har forskjellige front-end-rammeverk sine fordeler. Det som fungerer for en utvikler eller et prosjekt, fungerer kanskje ikke for en annen. Derfor er det ekstremt viktig å analysere mange alternativer før du velger noe spesifikt.

Før du velger et front-end-rammeverk, må du bestemme kunnskapsnivået ditt, samt de grunnleggende kravene til prosjektet ditt. Sjansen er stor for at ett eller flere av produktene på denne listen vil være perfekte for deg.

Visste du at 40 % av brukerne forlater nettsider med dårlig design? Hvorfor tape fortjeneste? Velg og installer en av dem akkurat nå 44 tusen premium nettstedsmaler. Det ideelle valget for din bedrift!

Blant alle serverprogrammeringsspråkene er PHP-rammeverket utvilsomt det mest egnede for læring. Det er nesten alltid installert selv på de billigste webhotellene. Den er også enkel å installere på hvilken som helst arbeidsmaskin. Nybegynnere med litt erfaring i å utvikle nettsider ved hjelp av HTML og CSS vil enkelt kunne mestre de grunnleggende konseptene: variabler, innebygde betingelser og inkludere utsagn. PHP gir også mange ofte brukte funksjoner som er nyttige for å utvikle dynamiske nettsteder.

Alt tyder på det PHP språk kan læres raskt uten problemer. Denne fordelen har imidlertid også sine ulemper. Nybegynnere kan lukke øynene for mange nyanser og gjøre feil i koden, siden de vil lære alt ganske raskt og vil være for sikre på kunnskapen sin. Som oftest, ettersom funksjonalitet legges til nettstedet, vil utdatakoden bli mer og mer kompleks. Dette er fordi PHP ikke har en mekanisme ut av esken for å hjelpe å skille problemløsning.

La oss nå se på PHP-rammeverket, eller snarere de 5 beste av dem, som vil hjelpe deg med å takle mange problemer når du arbeider. Vi vil kort introdusere de som definitivt er verdt å utforske i 2017, og fortelle deg nøyaktig hvordan de kan gjøre apputvikling enklere. Gå!

  1. Laravel

PHP-rammeverket har eksistert ganske lenge. En av de siste nybegynnere er Laravel. Etter utgivelsen av versjon 3 økte populariteten dramatisk, og i dag er det et av de mest kjente og utbredte rammeverkene. Laravels GitHub-depot rangerer høyere enn sine mer modne motparter som Symfony, CakePHP, CodeIgniter og Yii. Om dem vi vil snakke Seinere.

Laravel gjenbruker og setter sammen eksisterende komponenter, og gir deg et limlag på toppen som du kan bygge webapplikasjonene dine på en mer strukturert og praktisk måte. Ved å ta det beste fra populære rammeverk (ikke bare PHP, men også andre språk), tilbyr Laravel et komplett sett med verktøy og applikasjonsarkitektur som kombinerer mange av Beste egenskaper rammeverk som CodeIgniter, Yii, ASP.NET MVC, Sinatra, Ruby on Rails og så videre.

Nedenfor er en graf som tydelig viser veksten i popularitet til Laravel (kilde: Google Trends). Maksimal verdi(100) indikerer den maksimale populariteten til teknologien. En verdi på 50 indikerer at teknologien har blitt 50 % mindre populær, og en verdi på 0 indikerer at teknologien har sunket i popularitet til 1 %. Alt dette er også relevant for popularitetsgrafer for andre rammeverk.

Økningen i popularitet til Laravel
(kilde – Google Trender)

De fleste PHP-rammeverk bruker MVC-separasjonsparadigmet (Model-View-Controller). Hvis du noen gang har jobbet med et av verktøyene ovenfor eller er kjent med MVC, kan du mestre Laravel 5 (den mest siste versjon rammeverk) vil ikke være vanskelig.

  1. CodeIgniter

I likhet med Laravel er CodeIgniter basert på MVC-mønsteret. Dette er en tilnærming til programvareutvikling som skiller applikasjonslogikken fra presentasjonen. I praksis lar dette deg minimere antall skript på siden, siden presentasjonen er atskilt fra utførelsen av PHP-skriptene.

CodeIgniter er et flott, lett PHP-rammeverk designet for programmerere som trenger et enkelt, tilgjengelig sett med verktøy for å lage funksjonsrike webapplikasjoner.

Økningen i popularitet til CodeIgniter
(kilde – Google Trender)

CodeIgniter kommer med en enkel malmotor basert på erstatningsprinsippet. Tillegg og plugins er tilgjengelige for de fleste fullfunksjons malbehandlingsmotorer. Du kan også bruke dine egne kodestandarder og navnekonvensjoner, som bare har noen få forbehold angående klassenavnkonflikter. CodeIgniter er designet for å frigjøre deg, ikke begrense deg.

  1. Symfoni

Mens mange andre rammeverk bare følger reglene til MVC, er Symfony et rammeverk som har MVC i kjernen. Kanskje dette er en av grunnene til at Laravel-rammeverket og innholdsstyringssystemene (CMS) som Phpbb har tatt i bruk mange komponenter fra Symfony og begynte å følge i fotsporene.

Symfony-standarder gjør det enklere å håndtere feil og skrive kode av høy kvalitet. Hvert år vokser samfunnet hans. Symfony er et avansert komponentbasert PHP-rammeverk. Det vil tillate deg å lage nettsider og nettapplikasjoner av høy kvalitet.

Økende popularitet til Symfony
(kilde – Google Trender)

Symfony 3 er et sett med isolerte og gjenbrukbare komponenter som en gang drev premium PHP-applikasjoner som Drupal og phpBB.

PHP-rammeverk – vi snakker om det beste av dem i 2017

  1. Yii 2

Yii er et generalisert nettprogrammeringsrammeverk. Dette betyr at den lett egner seg for PHP-programmering for ulike typer webapplikasjoner. Dens komponentbaserte arkitektur og avanserte caching-støtte gjør den spesielt egnet for å bygge store applikasjoner. Du vil for eksempel kunne lage portaler, forum, nettbutikker, innholdsstyringssystemer (CMS), RESTful webtjenester og så videre.

Yii bruker MVC-arkitektonisk modell, så koden er organisert basert på denne tilnærmingen.

Fremveksten av Yii
(kilde – Google Trender)

Yii 2 er et omfattende PHP-rammeverk som gir et stort antall pålitelige og ferdige funksjoner. Disse inkluderer spørringsbyggere og ActiveRecord-malen for ulike databaser (spesielt relasjonsbaserte og NoSQL), støtte for utvikling av RESTful web-API-er, støtte for multi-level caching, og så videre.

  1. Nette

Nette-rammeverket er en annen selvsikker aktør i markedet for PHP-rammeverk for utvikling av webapplikasjoner, som fortjener den høyeste ros. Kommer med kraftige funksjoner og gjør livet enklere for webutviklere. Den bruker avanserte teknologier for å eliminere svake punkter i sikkerhetssystemet og motvirke ulike typer angrep som cross-site scripting, cross-site request forfalskning, session kapring og fiksering.

Nette er et moderne PHP-rammeverk som støtter teknologier som AJAX/AJAJ, avhengighetsinjeksjon, KISS, MVC, SEO, kul URL og Web 2.0.

Økende popularitet til Nette
(kilde – Google Trender)