Webbramverk

Ett webbramverk är ett kodbibliotek som gör webbutveckling snabbare och enklare genom att tillhandahålla gemensamma mönster för att bygga tillförlitliga, skalbara och underhållbara webbapplikationer. Efter början av 2000-talet använder professionella webbutvecklingsprojekt alltid ett befintligt ramverk utom i mycket ovanliga situationer.

Django, Bottle, Flask, Pyramid, Falcon och Sanic-logotyperna är upphovsrättsligt skyddade av respektive ägare.

Varför är ramverk användbara?

Ramverk för webbutveckling inkapslar det som utvecklare lärt sig under de senaste tjugo åren när de programmerat webbplatser och applikationer för webben. Ramverk gör det lättare att återanvända kod för vanliga HTTP-operationer och att strukturera projekt så att andra utvecklare med kunskap om ramverket snabbt kan bygga och underhålla applikationen.

Webramverk är ett koncept som implementeras av Django, Flask, Bottle, Pyramid, Morepath, TurboGears och flera andra bibliotek. Lär dig hur delarna passar ihop i kapitlet om webbutveckling eller visa alla ämnen.

Gemensam funktionalitet för webbramverk

Framverk tillhandahåller funktionalitet i sin kod eller genom tillägg för att utföra vanliga operationer som krävs för att köra webbapplikationer. Dessa gemensamma operationer omfattar bland annat följande:

  1. URL-routing
  2. Hantering och validering av inmatningsformulär
  3. HTML, XML, JSON och andra utdataformat med en mallmotor
  4. Konfiguration av databasanslutningar och hantering av persistenta data med hjälp av en objekt-relationsmappare (ORM)
  5. Webbsäkerhet mot förfalskning av förfrågningar på flera platser (CSRF), SQL-injektion, Cross-site Scripting (XSS) och andra vanliga skadliga attacker
  6. Lagring och hämtning av sessioner

Inte alla webbramverk innehåller kod för alla ovanstående funktioner.Ramverk kan vara olika från att utföra ett enda användningsfall till att tillhandahålla alla kända webbramverksfunktioner för alla utvecklare. Vissa ramverk har en ”batteri-inkluderad”-strategi där allt möjligt ingår i ramverket, medan andra har ett minimalt kärnpaket som kan utvidgas av andra paket.

Till exempel innehåller ramverket Django ORM-skiktet Django som gör det möjligt för en utvecklare att skriva relationella databasläsnings-, skriv-, fråga- och raderingsoperationer i Python-kod i stället för i SQL.Djangos ORM kan dock inte fungera utan betydande modifieringar i icke-relationella (NoSQL) databaser som till exempel MongoDB eller Cassandra.

Vissa andra ramverk som Flask och Pyramid är lättare att använda med icke-relationella databaser genom att införliva externa Pythonbibliotek.Det finns ett spektrum mellan minimal funktionalitet med enkel utbyggnad i ena änden och att inkludera allt i ramverket med tät integrering i den andra änden.

Måste jag använda ett ramverk?

Om du använder ett ramverk i ditt projekt eller inte beror på din erfarenhet av webbutveckling och vad du försöker åstadkomma. Om du är en nybörjarprogrammerare och bara vill arbeta med en webbapplikation som ett inlärningsprojekt kan ett ramverk hjälpa dig att förstå de begrepp som anges ovan, t.ex. URL-routing, datamanipulering och autentisering som är vanliga i de flesta webbapplikationer.

Om du däremot är en erfaren programmerare med stor erfarenhet av webbutveckling kan du känna att de befintliga ramverken inte uppfyller kraven för ditt projekt. I det fallet kan du blanda och matcha open source-bibliotek som Werkzeug forWSGI plumbing med din egen kod för att skapa ditt eget ramverk. Det finns fortfarande gott om utrymme i Pythons ekosystem för nya ramverk för att tillgodose de behov hos webbutvecklare som Django, Flask, Pyramid, Bottle och många andra inte tillgodoser.

Samt sett beror det på din erfarenhet och vad du försöker åstadkomma om du behöver använda ett ramverk för att bygga en webbapplikation eller inte.Att använda ett ramverk för att bygga en webbapplikation är verkligen inte nödvändigt, men det kommer att göra livet lättare för de flesta utvecklare i många fall.

Genomförande av ramverk för webbapplikationer

Talk Python to Me hade ett podcastavsnitt med en detaljerad jämförelse av ramverken Django, Flask, Tornado och Pyramid.

Är du nyfiken på hur koden i ett Djangoprojekt är strukturerad i jämförelse med Flask? Kolla in denna handledning för Django-webbapplikationer och se sedan samma applikation byggd med Flask.

Det finns också ett arkiv som hetercompare-python-web-frameworks där samma webbapplikation kodas med olika Python-webbrameworks, templating engines ochobject-relational mappers.

Resurser för webbramverk

  • Bygg ditt eget Python-webbramverk är ett fantastiskt sätt att lära sig hur WSGI fungerar och de många andra delar som tillsammans gör webbramverk användbara för webbutvecklare.

  • 12 förfrågningar per sekund undersöker hur det traditionellt synkrona webbramverketFlask står sig i förhållande till ett asynkront ramverk somSanic i ett konstgjort, enkelt riktmärke. Resultaten får det att se ut som om Sanic är mycket snabbare än Flask, men när du lägger till även en grundläggande mängd funktionalitet till ett projekt, inklusive databasfrågor och mallframställning, jämnar resultaten ut sig. Miguel Grinberg har också en bra läsning med bredare resultat i denna artikel där han ber läsarna att ignorera alla webbprestanda-jämförelser, inklusive denna.

  • När du lär dig att använda ett eller flera webbramverk är det bra att ha en uppfattning om vad koden under täckmanteln gör. Det här inlägget om hur man bygger ett enkelt Pythonramverk från grunden visar hur HTTP-anslutningar, routning och förfrågningar kan fungera på bara 320 rader kod. Inlägget är fantastiskt även om det resulterande ramverket är en förenkling av vad ramverk som Django, Flask och Pyramid låter utvecklare göra.

  • Det finns också en annan, nyare handledning i flera delar om att bygga ett eget webramverk i Python. Den här serien är baserad på ett projekt som författaren kodar för att lära sig:

    • Del 1: Hantering av förfrågningar
    • Del 2: Rutter, klassbaserade handlers och enhetstestning
    • Del 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 Framework innehåller bakgrundsinformation och kodjämförelser för liknande webbapplikationer byggda i dessa tre stora Pythonramverk.

  • Detta fascinerande blogginlägg tar en titt på kodkomplexiteten hos flera Pythonwebbramverk genom att tillhandahålla visualiseringar baserade på deras kodbaser.

  • Python’s webframeworks benchmarksär ett test av ett ramverks responsivitet med kodning av ett objekt tillJSON och returnering av det som svar samt hämtning av data från databasen och rendering av den i en mall. Det fanns inga entydiga resultat men resultatet är ändå roligt att läsa om.

  • Vilka webbramverk använder du och varför är de fantastiska?är en språkoberoende Reddit-diskussion om webbramverk. Det är intressant att se vad programmerare i andra språk gillar och ogillar med sin uppsättning webbramverk jämfört med de viktigaste ramverken i Python.

  • Denna användarröstade fråga & svarssida frågade ”Vilka är de bästa webbramverken för allmänna ändamål i Python som kan användas i produktion?” Rösterna är inte lika viktiga som listan över de många ramverken som finns tillgängliga för Pythonutvecklare.

  • Django vs. Flask in 2019: Which Framework to Choos tittar på de bästa användningsområdena för Django och Flask och vad som gör dem unika ur utbildnings- och utvecklingssynpunkt.

  • 11 nya Python-webbramverkhar en kortfattad beskrivning av flera nyare ramverk som fortfarande håller på att växa fram, till exempel Sanic, Masoniteoch Molten.

Checklista för inlärning av webbramverk

  1. Välj ett större Python-webbramverk (Django ellerFlask rekommenderas) och håll dig till det. När du precis börjar är det bäst att lära dig ett ramverk först istället för att hoppa runt och försöka förstå alla ramverk.

  2. Work through a detailed tutorial found within the resources links on theframework’s page.

  3. Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.

  4. Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *