Szkielet webowy to biblioteka kodu, która przyspiesza i ułatwia tworzenie stron internetowych poprzez dostarczanie wspólnych wzorców do budowania niezawodnych, skalowalnych i łatwych w utrzymaniu aplikacji internetowych. Począwszy od wczesnych lat 2000, profesjonalne projekty webowe zawsze używają istniejących frameworków, z wyjątkiem bardzo nietypowych sytuacji.
Dlaczego frameworki webowe są użyteczne?
F frameworki webowe zawierają to, czego programiści nauczyli się przez ostatnie dwadzieścia lat podczas programowania stron i aplikacji internetowych. Ułatwiają one ponowne wykorzystanie kodu dla typowych operacji HTTP oraz ustrukturyzowanie projektów tak, aby inni programiści znający framework mogli szybko zbudować i utrzymać aplikację.
Wspólna funkcjonalność frameworków
Frameworki zapewniają funkcjonalność w swoim kodzie lub poprzez rozszerzenia do wykonywania wspólnych operacji wymaganych do uruchamiania aplikacji internetowych. Te wspólne operacje obejmują:
- URL routing
- Obsługę i walidację formularzy wejściowych
- HTML, XML, JSON i inne formaty wyjściowe z silnikiem szablonów
- Konfigurację połączenia z bazą danych i manipulację trwałymi danymi za pomocą mappera obiektowo-relacyjnego (ORM)
- Zabezpieczenie sieci przed CSRF (cross-site request forgery), SQL Injection, Cross-site Scripting (XSS) i innymi popularnymi złośliwymi atakami
- Przechowywanie i pobieranie sesji
Nie wszystkie frameworki internetowe zawierają kod dla wszystkich powyższych funkcjonalności.Frameworki znajdują się na spektrum od wykonywania pojedynczego przypadku użycia do dostarczania każdej znanej funkcji webowej każdemu programiście. Niektóre frameworki przyjmują podejście „baterie w zestawie”, gdzie wszystko co możliwe jest dołączone do frameworka, podczas gdy inne mają minimalny pakiet podstawowy, który jest podatny na rozszerzenia dostarczane przez inne pakiety.
Na przykład, framework aplikacji webowych Django zawiera warstwę Django ORM, która pozwala programiście pisać operacje odczytu, zapisu, zapytań i usuwania danych w bazie danych w kodzie Pythona, a nie w SQL.Jednakże, ORM Django nie może działać bez znaczących modyfikacji na nierelacyjnych (NoSQL) bazach danych takich jakMongoDB czy Cassandra.
Kilka innych frameworków takich jak Flask i Pyramid są łatwiejsze w użyciu z nierelacyjnymi bazami danych poprzez dołączenie zewnętrznych bibliotek Pythona.Istnieje spektrum pomiędzy minimalną funkcjonalnością z łatwą rozszerzalnością na jednym końcu a zawarciem wszystkiego w frameworku z ścisłą integracją na drugim końcu.
Czy muszę używać frameworka?
To czy użyjesz frameworka w swoim projekcie zależy od twojego doświadczenia w tworzeniu stron internetowych i tego co chcesz osiągnąć. Jeśli jesteś początkującym programistą i chcesz pracować nad aplikacją webową jako projekt edukacyjny, framework może pomóc ci zrozumieć koncepcje wymienione powyżej, takie jak routing URL, manipulacja danymi i uwierzytelnianie, które są wspólne dla większości aplikacji webowych.
Z drugiej strony, jeśli jesteś doświadczonym programistą z dużym doświadczeniem w tworzeniu stron internetowych, możesz mieć wrażenie, że istniejące frameworki nie spełniają wymagań twojego projektu. W takim przypadku możesz mieszać i dopasowywać otwarte biblioteki źródłowe takie jak Werkzeug dla hydraulikiWSGI z własnym kodem, aby stworzyć swój własny framework. W ekosystemie Pythona jest jeszcze dużo miejsca na nowe frameworki, które zaspokoją potrzeby twórców stron internetowych niezaspokojone przez Django, Flask, Pyramid, Bottle i wiele innych.
W skrócie, to czy potrzebujesz frameworka do zbudowania aplikacji webowej zależy od twojego doświadczenia i tego, co chcesz osiągnąć.Użycie frameworka do zbudowania aplikacji webowej z pewnością nie jest wymagane, ale w wielu przypadkach ułatwi życie większości programistów.
Porównanie frameworków
Talk Python to Me miał odcinek podcastu ze szczegółowym porównaniem frameworków Django, Flask, Tornado i Pyramid.
Ciekawi Cię jak zorganizowany jest kod w projekcie Django w porównaniu z Flaskiem? Sprawdź ten tutorial aplikacji Django, a następnie obejrzyj tę samą aplikację zbudowaną przy użyciu Flaska.
Istnieje również repozytorium o nazwiecompare-python-web-frameworks, gdzie ta sama aplikacja jest kodowana przy użyciu różnych frameworków Pythona, silników szablonujących i mapperów obiektowo-relacyjnych.
Zasoby dotyczące frameworków webowych
-
Building Your Own Python Web Framework is an awesome way to learn how the WSGI worksand the many other pieces that combine to make web frameworks usefult to web developers.
-
12 requests per secondexamines how the traditionally synchronous web frameworkFlask compares to an async framework likeSanic in an artificial, simple benchmark. Wyniki sprawiają, że wygląda na to, że Sanic jest znacznie szybszy od Flaska, ale gdy tylko doda się do projektu choćby podstawową funkcjonalność, w tym zapytania do bazy danych i szablony, wyniki się wyrównują. Miguel Grinberg ma również świetną lekturę z szerszymi wynikami w artykule, w którym prosi czytelników o ignorowanie wszystkich benchmarków wydajności sieci, łącznie z tym jednym.
-
Kiedy uczysz się jak używać jednego lub więcej frameworków internetowych, warto mieć pojęcie co robi kod pod przykrywką. Ten post o budowaniu prostego frameworka w Pythonie od podstaw pokazuje, jak połączenia HTTP, routing i żądania mogą działać w zaledwie 320 liniach kodu. Ten post jest świetny, mimo że powstały framework jest uproszczeniem tego, co frameworki takie jak Django, Flask i Pyramid pozwalają programistom osiągnąć.
-
Jest też inny, bardziej aktualny, wieloczęściowy tutorial o budowaniu własnego frameworka w Pythonie. Seria ta oparta jest na projekcie Calcazar, który autor koduje w celach edukacyjnych:
- Część 1: Obsługa żądań
- Część 2: Routes, Class-Based Handlers and Unit Testing
- Część 3: 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 these three big Python frameworks.
-
Ten fascynujący wpis na blogu przygląda się złożoności kodu kilku frameworków Pythona poprzez dostarczenie wizualizacji opartych na ich bazach kodu.
-
Python’s web frameworks benchmarks is a test of the responsiveness of a framework with encoding an object toJSON and returning it as a response as well as retrieving data from thedatabase and rendering it in a template. Nie było żadnych rozstrzygających wyników, ale mimo to fajnie jest o tym poczytać.
-
Jakich frameworków używasz i dlaczego są świetne? Interesujące jest zobaczyć, co programiści w innych językach lubią i czego nie lubią w swoim zestawie frameworków internetowych w porównaniu do głównych frameworków Pythona.
-
Ten użytkownik głosował na pytanie & odpowiedź strona zapytała „Jakie są najlepsze ogólne Python web frameworki użyteczne w produkcji?”.Głosy nie są tak ważne jak lista wielu frameworków, które są dostępne dla programistów Pythona.
-
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 nowych frameworków Pythona ma krótkie omówienie kilku nowszych, wciąż powstających frameworków, takich jak Sanic, Masonite i Molten.
Lista kontrolna do nauki frameworków
-
Wybierz jeden z głównych frameworków Pythona (Django lub Flask są zalecane) i trzymaj się go. Kiedy dopiero zaczynasz, najlepiej jest nauczyć się najpierw jednego frameworka, zamiast obijać się próbując zrozumieć każdy z nich.
-
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.