jaký webový rámec bych měl použít v Clojure?

v této příručce popisuji Dostupné možnosti webového rámce pro Clojure a dávám svá doporučení.

Roll svůj vlastní stack z doporučených knihoven (již brzy), pokud se právě učíte. Bude to nejlepší způsob, jak pochopit, jak vše funguje.

použijte podstavec, pokud chcete vytvořit základ, na kterém chcete vytvořit aplikaci.

použijte Luminus, pokud chcete flexibilitu válcování vlastního zásobníku bez práce.

Úvod

jedna otázka, kterou mi začátečníci v Clojure hodně kladou, je “ jaký webový rámec bych měl použít?“To je dobrá otázka. V Pythonu je Django. V PHP, Drupal. A samozřejmě v Ruby je král všech webových rámců, Ruby on Rails. Ale v Clojure je to obtížná otázka. Dokonce i rozhodování o tom, co je rámec a co je knihovna, může být obtížné. Budeme to muset nejprve řešit.

co je (a není) webový rámec

pro účely této příručky definujeme webový rámec jako soubor kódu a závislostí, které poskytují holistický přístup k vytváření webové aplikace. Tato definice vylučuje několik knihoven, které se běžně nazývají rámce, jako je Compojure a Ring, protože ty samy o sobě neposkytují přístup. Nicméně, stále existuje několik skvělých uchazečů, které zde považuji.

protože válcování vlastního zásobníku je v Clojure běžnou alternativou k použití předem vytvořeného rámce a lze jej považovat za holistický přístup (konkrétně sestavení aplikace ze stávajících knihoven), považuji to také v doporučeních.

kritéria doporučení

účelem této příručky je poskytnout silná doporučení pro webové rámce pro různé potřeby. Zde jsou kritéria, která zkoumám o každém rámci:

dokumentace

má rámec snadno sledovatelnou dokumentaci? Hledám návody pro začátečníky prostřednictvím pokročilých témat.

Společenství

velká aktivní komunita je důležitou součástí životaschopnosti rámce. Velká komunita může snadněji poskytovat, udržovat závislosti aktuální a vytvářet úplnější řešení.

splatnost

stáří projektu a jak dlouho se používá ve výrobě ve velkých lokalitách, je dalším důležitým faktorem. Dávám přednost starším rámcům, které byly nasazeny pro významné weby.

webové standardy

kromě velkých tří webových jazyků (HTML, CSS a JavaScript) existují standardy pro samotný protokol HTTP a řadu „osvědčených postupů“. Mluvím o kódech odezvy HTTP, vyjednávání obsahu, CORS, WebSockets, atd. Jak rámec tyto normy využívá? Jak je porušuje?

přístup

vzhledem k tomu, že rámec musí poskytovat holistický přístup, musí být zohledněn samotný přístup. Jak framework přistupuje k vytváření aplikace?

nasazení

když je vaše aplikace připravena, musí být nasazena. Jaké možnosti nasazení jsou k dispozici? Širší odrůda je lepší.

vysoce doporučeno

je mi divné to říkat, ale nejlepší volbou pro začátečníky je stále hodit si vlastní. Válcování vlastního zásobníku není tak obtížné, jak se může zdát. Můžete vytvořit funkční zásobník z několika knihoven. Poměrně často, robustnější, postavený pro vás rámce učinily stovky rozhodnutí pro vás o tom, jak vytvořit zásobník, ale stále vyžadují, abyste pochopili legii knihoven, které si vybrali.

kromě toho, že je dobré pro učení, rolling your own vám dává úplnou kontrolu nad podporou nebo nepodporováním dané funkce.

největší nevýhodou je, že musíte udělat spoustu rozhodnutí pro sebe. Existuje mnoho knihoven a výběr mezi nimi může být obtížný problém. Jedna útěcha je, že při sestavování vlastních knihoven, alespoň v Clojure, je relativně snadné přepínat knihovny, pokud zjistíte, že pro vás nefunguje.

pokud chcete úplnější řešení (a budete), pokud budete pokračovat v jeho vytváření sami, dorazíte k něčemu, co se velmi podobá robustnějším rámcům. Doporučil bych přejít na jedno z dalších doporučených řešení, spíše než budovat svůj vlastní kompletní rámec. Naštěstí, přepínání mezi nimi je snadné, protože všichni pracují na standardu Ring.

podstavec (GitHub)

podstavec je zralá sada knihoven, původně vytvořených společností Cognitect, pro vývoj moderních streamovacích webových aplikací. Je postaven na připojení s dlouhou životností, která vám umožní streamovat data ze serveru do klienta v průběhu času. Pro podporu této funkce, Pedestal vynalezl myšlenku interceptorů, které vám poskytnou způsob, jak definovat potrubí asynchronních kroků, kterými váš požadavek prochází.

doporučuji podstavec, protože je zralý, má aktivní komunitu, podporuje širokou škálu možností nasazení a má dobrou podporu pro webové aplikace. Dva klepy proti němu jsou jeho dokumentace a nedostatek sjednocujícího přístupu. Má několik průvodců, kteří vás provedou základním Ahoj, svět! aplikace. Ale nenašel jsem nic, co by vysvětlovalo, jak by měla být sestavena kompletní aplikace. Přístupový podstavec usnadňuje poskytnutí nízkoúrovňových základů, které budete potřebovat, jako podstavec, na kterém stojí o něco vyšší, než začíná od nuly. Jistě, že základy jsou důležité, ale hodně je ponecháno na developerovi, aby si vybral a postavil se. Například záměrně nemá řešení HTML šablon. Nazývá to „API-first“. Očekával bych, že kompletní webový rámec bude mít řešení pro vytváření HTML.

navzdory těmto problémům doporučuji podstavec jako pevný a flexibilní základ, na kterém lze vytvářet aplikace.

Luminus (GitHub)

Luminus je v podstatě projekt šablony. Z této šablony vytvoříte novou webovou aplikaci a vše je nastaveno pro vás. Luminus vám dává několik možností pro šablonu, ale obecně, jeho přístup je, aby se volby pro vás-někdy poskytuje své vlastní knihovny a někdy pomocí stávajících knihoven. Když je váš projekt vytvořen, budete mít kompletní webový zásobník, na kterém můžete stavět nebo upravovat, jak uznáte za vhodné. Hlavní výhodou je jednotná vize, která vedla výběr knihoven.

Luminus si klade za cíl poskytnout vše, co potřebujete k psaní webových aplikací. Získáte vše od tras, správy relací, kompilace ClojureScript, migrace databází. Vše je předkonfigurováno, takže můžete začít s logikou aplikace hned. Přemýšlejte o Luminous, jako je sada knihoven a konfigurací, které byste si sami vytvořili 10 let práce na aplikaci. Možná to zpočátku nebudete potřebovat, ale nakonec budete chtít mimo jiné zabezpečení, protokolování, internacionalizaci. Luminus vám to dá jedním příkazem.

hlavní nevýhodou Luminusu je, že mnoho knihoven je vystaveno přímo. Ano, To vám dává sílu je nakonfigurovat tak, jak chcete. Ale také to znamená, že musíte hodně pochopit, pokud chcete stavět na výchozím chování. Naštěstí je dokumentační příběh vynikající. Existuje dokonce kniha, která dokumentuje doporučený přístup k vytváření webové aplikace pomocí Luminus.

kromě toho existuje již několik let, byl nasazen pro velké aplikace a má řadu možností nasazení.

Ostatní rámce poznámky

tyto rámce jsou zajímavé pro své inovativní přístupy.

Fulcro (GitHub)

Fulcro je fullstack řešení. Používá React na frontendu, ale má kompletní datový model od klienta k databázi. Pokud je tento druh sjednocující vize lákavý,zkuste to. Existuje vynikající dokumentace a je stále aktivně rozvíjena.

potrubí

potrubí je Leiningen šablona, která přístup k budování webové aplikace jako sadu konfigurací. Například, v potrubí, směrování je konfigurace. Migrace je konfigurace. Pomocí tohoto sjednocujícího přístupu zaměřeného na data vytvoříte webovou aplikaci, kterou lze deterministicky načíst. Zdá se, že rámec získává trakci.

Tadam

tadam nakonfiguroval řadu existujících knihoven a vytvořil standardní adresářovou strukturu, aby bylo psaní jednoduchých webů velmi snadné. Je stále nový, ale aktivní.

Coast on Clojure (GitHub)

Coast on Clojure vám dává úplné řešení (databáze sloužící HTML) a zároveň se zaměřuje na udržení věci jednoduché.

Hoplon (GitHub)

Hoplon je fullstack řešení se zajímavým přístupem. Část frontendu sestavuje ClojureScript a umožňuje vytvářet interaktivní komponenty, které používají model dataflow podobný tabulce. Může se připojit k backendu voláním funkcí, které jsou proxy funkcí na serveru. To vám umožní obejít celou situaci směrování. Vývoj na něm je pomalý.

nedoporučuje se

tyto rámce se nedoporučují, protože nebyly aktivně vyvíjeny příliš dlouho a nikdy neměly dostatečnou trakci. Nehodnotil jsem je z technických důvodů, protože bych je nedoporučoval pouze na základě jejich neaktivního vývoje.

  • webnf
  • Clojure na cívkách
  • joodoo
  • Datsys

ne rámce

tyto projekty se často nazývají rámce, ale nesplňují definici „poskytování holistického přístupu k vytváření webové aplikace“. Tady jsem je nehodnotil.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.