A webes keretrendszer egy olyan kódkönyvtár, amely gyorsabbá és egyszerűbbé teszi a webfejlesztést azáltal, hogy közös mintákat biztosít a megbízható, skálázható és karbantartható webalkalmazások építéséhez. A 2000-es évek eleje után a professzionális webfejlesztési projektek mindig egy meglévő webes keretrendszert használnak, kivéve nagyon szokatlan helyzetekben.
Miért hasznosak a webes keretrendszerek?
A webes keretrendszerek azt foglalják magukba, amit a fejlesztők az elmúlt húsz év során tanultak a webes oldalak és alkalmazások programozása során. A keretrendszerek megkönnyítik a közös HTTP műveletek kódjának újrafelhasználását és a projektek strukturálását, hogy más, a keretrendszert ismerő fejlesztők gyorsan felépíthessék és karbantarthassák az alkalmazást.
Az általános webes keretrendszerfunkciók
A keretrendszerek a kódjukban vagy bővítményeken keresztül nyújtanak funkciókat a webes alkalmazások futtatásához szükséges általános műveletek elvégzéséhez. Ezek a közös műveletek a következők:
- URL útválasztás
- Bemeneti űrlapok kezelése és érvényesítése
- HTML, XML, JSON és egyéb kimeneti formátumok egy sablonozó motor segítségével
- Adatbázis kapcsolat konfigurálása és tartós adatmanipuláció egy objektum-relációs leképezőn (ORM) keresztül
- Webes biztonság aCross-site request forgery (CSRF) ellen, SQL Injection,Cross-site Scripting (XSS) és más gyakori rosszindulatú támadások ellen
- Munkamenet tárolás és visszakeresés
Nem minden webes keretrendszer tartalmaz kódot a fenti funkciók mindegyikéhez.A keretrendszerek az egyetlen felhasználási eset végrehajtásától a minden ismert webes keretrendszerfunkció minden fejlesztő számára történő biztosításáig terjedő spektrumba esnek. Egyes keretrendszerek az “elemeket is tartalmazó” megközelítést követik, ahol minden lehetséges elemet tartalmaz a keretrendszer, míg mások egy minimális alapcsomaggal rendelkeznek, amely más csomagok által biztosított bővítésekre alkalmas.
A Django webalkalmazási keretrendszer például tartalmazza a Django ORM réteget, amely lehetővé teszi a fejlesztő számára, hogy a relációs adatbázisok olvasási, írási, lekérdezési és törlési műveleteit SQL helyett Python kódban írja.A Django ORM azonban jelentős módosítások nélkül nem működik az olyan nemrelációs (NoSQL) adatbázisokon, mint aMongoDB vagy a Cassandra.
Néhány más webes keretrendszer, például a Flask és aPyramid könnyebben használható nem-relációs adatbázisokkal külső Python könyvtárak beépítésével.Van egy spektrum a minimális funkcionalitás és a könnyű bővíthetőség között az egyik végén, és a keretrendszerbe való teljes integráció között a másik végén.
Kell-e webes keretrendszert használnom?
Az, hogy használ-e webes keretrendszert a projektjében, a webfejlesztésben szerzett tapasztalataitól és attól függ, hogy mit szeretne elérni. Ha kezdő programozó vagy, és csak tanulási projektként szeretnél dolgozni egy webes alkalmazáson, akkor egy keretrendszer segíthet megérteni a fent felsorolt fogalmakat, például az URL-irányítást, az adatmanipulációt és a hitelesítést, amelyek a webes alkalmazások többségénél gyakoriak.
Ha viszont tapasztalt programozó vagy, aki jelentős webfejlesztési tapasztalattal rendelkezik, akkor úgy érezheted, hogy a meglévő keretrendszerek nem felelnek meg a projekted követelményeinek. Ebben az esetben a nyílt forráskódú könyvtárakat, mint például a Werkzeug forWSGI plumbing, keverheti a saját kódjával, hogy létrehozza a saját keretrendszerét. A Python ökoszisztémában még mindig rengeteg hely van új keretrendszerek számára, hogy kielégítsék a webfejlesztők azon igényeit, amelyeket a Django, Flask, Pyramid, Bottle és sok más nem elégít ki.
Röviden, az, hogy szükséged van-e webes keretrendszerre egy webes alkalmazás elkészítéséhez, a tapasztalatodtól és attól függ, hogy mit akarsz elérni.Egy webes keretrendszer használata egy webalkalmazás építéséhez biztosan nem szükséges,de sok esetben megkönnyíti a legtöbb fejlesztő életét.
Webes keretrendszerek összehasonlítása
A Talk Python to Me podcast epizódjában részletesen összehasonlította a Django,Flask, Tornado és Pyramid keretrendszereket.
Kíváncsi vagy, hogy egy Django projekt kódja hogyan épül fel a Flaskhoz képest? Nézze meg ezt a Django webalkalmazás bemutatót, majd nézze meg ugyanazt a Flaskkal épített alkalmazást.
Ezeken kívül van egy Compare-python-web-frameworks nevű tároló is, ahol ugyanazt a webalkalmazást különböző Python webframeworks, templating engine-ek és objektum-relációs leképezőkkel kódolják.
Hálózati keretrendszerek forrásai
-
A saját Python webes keretrendszer építése egy remek módja annak, hogy megtanuljuk, hogyan működik a WSGI és a sok más darab, amelyek együttesen teszik a webes keretrendszereket hasznosakká a webfejlesztők számára.
-
12 kérés másodpercenkéntmegvizsgálja, hogyan viszonyul a hagyományosan szinkron webes keretrendszerFlask egy aszinkron keretrendszerhez, mint aSanic, egy mesterséges, egyszerű benchmarkban. Az eredmények alapján úgy tűnik, hogy a Sanic sokkal gyorsabb, mint a Flask, de amint még egy alapvető mennyiségű funkcionalitást is hozzáadunk egy projekthez, beleértve az adatbázis-lekérdezéseket és a templatingot, az eredmények kiegyenlítődnek. Miguel Grinberg is remekül olvasható, szélesebb körű eredményekkel ebben a cikkben, amelyben arra kéri az olvasókat, hogy hagyjanak figyelmen kívül minden webes teljesítmény benchmarkot, beleértve ezt is.
-
Amikor egy vagy több webes keretrendszer használatát tanulod, hasznos, ha van elképzelésed arról, hogy mit csinál a kód a takaró alatt. Ez a bejegyzés az egyszerű Python-keretrendszer megépítéséről a semmiből megmutatja, hogyan működhetnek a HTTP-kapcsolatok, az útválasztás és a kérések mindössze 320 sornyi kódban. Ez a poszt még akkor is nagyszerű, ha az eredményül kapott keretrendszer leegyszerűsítése annak, amit az olyan keretrendszerek, mint a Django, Flask és Pyramid lehetővé tesznek a fejlesztők számára.
-
Egy másik, újabb, több részből álló bemutató is van a saját webes keretrendszer építéséről Pythonban. Ez a sorozat a szerző által tanulás céljából kódolt alcazar projekten alapul:
- 1. rész: Kérések kezelése
- 2. rész: Útvonalak, osztályalapú kezelők és egységtesztelés
- 3. rész: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the”What is a web framework and how does it compare to LAMP?”question on Stack Overflow.
-
Another great series that digs behind the web framework magic is”Web Application from Scratch”. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Choosing a Python Web Frameworkcontains background information and code comparisons for similarweb applications built in this three big Python frameworks.
-
This fascinating blog post takes a look at thecode complexity of several Python web frameworksby providing visualizations based on their code bases.
-
A Python webes keretrendszerek benchmarkjai egy keretrendszer reszponzivitásának tesztje egy objektum JSON-ba kódolásával és válaszként való visszaküldésével, valamint adatok lekérdezésével azadatbázisból és renderelésével egy sablonban. Nem születtek meggyőző eredmények, de a kimenet mégis szórakoztató olvasmány.
-
Milyen webes keretrendszereket használsz és miért fantasztikusak?Ez egy nyelvfüggetlen Reddit-beszélgetés a webes keretrendszerekről. Érdekes látni, hogy más nyelvek programozói mit szeretnek és mit nem szeretnek a saját webes keretrendszerükben a fő Python keretrendszerekhez képest.
-
Ez a felhasználó által megszavazott kérdés & válaszoldala azt kérdezte, hogy “Melyek a legjobb általános célú, termelésben használható Python webes keretrendszerek?” A szavazatok nem annyira fontosak, mint a Python fejlesztők számára elérhető számos keretrendszer listája.
-
Django vs. Flask in 2019: Which Framework to Chooselooks at the best use cases for Django and Flask along with whatmakes them unique, from an educational and development standpoint.
-
11 új Python webes keretrendszeregy rövid ismertető több új, még kialakulóban lévő keretrendszerről, mint például a Sanic, a Masonite és a Molten.
Webes keretrendszerek tanulási ellenőrzőlista
-
Válasszon egy fő Python webes keretrendszert (Django vagyFlask ajánlott), és ragaszkodjon hozzá. Ha még csak most kezded, a legjobb, ha először egy keretrendszert tanulsz meg, ahelyett, hogy minden keretrendszert megpróbálsz megérteni.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.