mitä Web-kehystä minun pitäisi käyttää Clojuressa?

tässä oppaassa kuvailen Clojuren käytettävissä olevia verkkokehysvaihtoehtoja ja annan suositukseni.

rullaa oma pinosi suositelluista kirjastoista (tulossa pian), jos olet vasta oppimassa. Se on paras tapa ymmärtää, miten kaikki toimii.

käytä Pedestalia, jos haluat tuotantotestatun perustan, jolle sovelluksesi voi rakentaa.

käytä Luminusta, jos haluat joustaa Oman pinosi rullaamisessa ilman siihen liittyvää työtä.

Johdanto

yksi clojuressa aloittelevien aloittelijoiden paljon kysymä kysymys on ” mitä web-kehystä minun pitäisi käyttää?”Tämä on hyvä kysymys. Pythonissa on Django. PHP: ssä Drupal. Rubyssa on tietenkin kaikkien verkkokehysten kuningas, Ruby On Rails. Clojuressa tähän kysymykseen on kuitenkin vaikea vastata. Jopa sen päättäminen, mikä on kehys ja mikä on kirjasto, voi olla vaikeaa. Meidän on puututtava siihen ensin.

mikä on (ja mikä ei) web framework

tässä oppaassa määritellään web framework koodikokoelmaksi ja riippuvuuksiksi, jotka tarjoavat kokonaisvaltaisen lähestymistavan web-sovelluksen rakentamiseen. Tämä määritelmä sulkee pois useita kirjastoja, joita kutsutaan yleisesti kehyksiksi, kuten Compojure ja Ring, koska ne eivät itsessään anna sinulle lähestymistapaa. On kuitenkin vielä useita suuria haastajia, joita pidän tässä.

koska Oman pinon rullaaminen on clojuressa yleinen vaihtoehto valmiiksi rakennetun kehyksen käytölle, ja sitä voidaan pitää kokonaisvaltaisena lähestymistapana (eli rakentaa sovellus olemassa olevista kirjastoista), katson sen myös suosituksissa.

Suosituskriteerit

tämän oppaan tarkoituksena on antaa vahvoja suosituksia verkkokehyksiksi eri tarpeisiin. Tässä ovat kriteerit, joita tarkastelen kunkin kehyksen osalta:

dokumentaatio

onko viitekehyksessä helposti noudatettavaa dokumentaatiota? Etsin aloittelijoille tutorials kautta edistyneitä aiheita.

yhteisö

laaja, aktiivinen yhteisö on tärkeä osa kehyksen elinkelpoisuutta. Suuri yhteisö voi helpommin tarjota, pitää riippuvuudet ajan tasalla ja rakentaa täydellisemmän ratkaisun.

maturiteetti

hankkeen ikä ja se, kuinka kauan sitä on käytetty tuotannossa suurissa rakennuskohteissa, on toinen tärkeä tekijä. Suosin vanhempia kehyksiä, jotka on otettu käyttöön merkittäville kohteille.

Web-standardit

kolmen suuren web-kielen (HTML, CSS ja JavaScript) lisäksi on olemassa HTTP-protokollan standardit sekä joukko ”parhaita käytäntöjä”. Puhun HTTP – vastauskoodeista, sisältöneuvotteluista, CORSISTA, Websocketeista jne. Miten kehyksessä käytetään näitä standardeja? Miten se loukkaa heitä?

lähestymistapa

koska kehyksen on tarjottava kokonaisvaltainen lähestymistapa, itse lähestymistapa on otettava huomioon. Miten puitteet suhtautuvat sovelluksen rakentamiseen?

käyttöönotto

kun hakemus on valmis, se on otettava käyttöön. Mitä käyttöönottovaihtoehtoja on saatavilla? Laajempi valikoima on parempi.

erittäin suositeltava

tuntuu oudolta sanoa tämä, mutta aloittelijalle paras vaihtoehto on silti rullata oma. Oman pinon rullaaminen ei ole niin vaikeaa kuin miltä se saattaa tuntua. Voit tehdä rakentaa toimiva pino kourallinen kirjastoja. Usein, vankempi, rakennettu sinulle puitteet ovat tehneet satoja päätöksiä sinulle siitä, miten rakentaa pino, mutta ne silti vaativat sinua ymmärtämään legion kirjastojen he valitsivat.

sen lisäksi, että Oman rullaaminen on hyväksi oppimiselle, se antaa täydellisen kontrollin tukea tai olla tukematta jotakin ominaisuutta.

suurin epäkohta on se, että pitää tehdä paljon päätöksiä itse. On olemassa monia kirjastoja siellä ja valitsemalla joukossa voi olla vaikea ehdotus. Yksi lohtu on se, että omia kirjastoja kootessa ainakin Clojuressa on suhteellisen helppo vaihtaa kirjastoa, jos huomaa, ettei sellainen toimi itselle.

kun haluat täydellisemmän ratkaisun (ja tulet haluamaan), jos jatkat sen rakentamista itse, päädyt johonkin, joka muistuttaa hyvin paljon vankempia puitteita. Suosittelen siirtymistä johonkin muihin suositeltuihin ratkaisuihin sen sijaan, että rakentaisit Oman kokonaiskehyksesi. Onneksi vaihto niiden välillä on helppoa, sillä ne kaikki toimivat Rengasstandardilla.

Pedestal (GitHub)

Pedestal on cognitecin alun perin perustama kypsä kirjastokokonaisuus, joka on tarkoitettu nykyaikaisten, suoratoistettavien verkkosovellusten kehittämiseen. Se on rakennettu pitkäikäisiä yhteyksiä, joiden avulla voit suoratoistaa tietoja palvelimelta asiakkaalle ajan. Tukeakseen tätä ominaisuutta, Pedestal keksi idean torjuntahävittäjistä, jotka antavat sinulle tavan määritellä putkistot asynkronisista vaiheista, jotka pyyntösi menee läpi.

suosittelen Pedestalia, koska se on kypsä, sillä on aktiivinen yhteisö, se tukee monia erilaisia käyttöönottovaihtoehtoja ja sillä on hyvä tuki verkkosovelluksille. Kaksi kolhua sitä vastaan ovat sen dokumentointi ja sen yhdistävän lähestymistavan puuttuminen. Se on joitakin oppaita, jotka saavat sinut läpi perus Hello, World! sovellus. Mutta en ole löytänyt mitään, mikä selittäisi, miten täydellinen hakemus pitäisi koota. Lähestymistapa Jalusta helpottaa on tarjota matalan tason pohjatyön tarvitset, kuten jalusta, jolla seistä hieman pitempi kuin aloittaa tyhjästä. Pohjatyö on toki tärkeää, mutta paljon jää rakennuttajan tehtäväksi valita ja rakentaa itse. Esimerkiksi, se tarkoituksellisesti ei ole HTML templating ratkaisu. Se kutsuu sitä ”API-ensimmäiseksi”. Odotan täydellinen web-puitteet on ratkaisu luoda HTML.

näistä asioista huolimatta suosittelen Pedestalia vankaksi ja joustavaksi perustaksi, jolle sovelluksia voi rakentaa.

Luminus (GitHub)

Luminus on pohjimmiltaan malliprojekti. Luot uuden web-sovelluksen kyseisestä mallista, ja kaikki on perustettu sinua varten. Luminus antaa sinulle joitakin vaihtoehtoja mallin, mutta yleensä sen lähestymistapa on tehdä valintoja puolestasi-joskus tarjota omia kirjastoja ja joskus käyttää olemassa olevia kirjastoja. Kun projekti on luotu, sinulla on täydellinen web pino, joka on sinun rakentaa tai muokata kuin parhaaksi näet. Suurin etu on kirjastojen valintoja ohjannut yhtenäinen visio.

Luminus pyrkii tarjoamaan kaiken tarvittavan verkkosovellusten kirjoittamiseen. Saat kaiken reiteistä, istunnonhallinnasta, clojurescript-kokoamisesta, tietokantamuuttoihin. Kaikki tulee valmiiksi konfiguroituna, joten voit aloittaa sovelluksen logiikan heti. Ajattele valoisa kuten joukko kirjastot ja kokoonpanot rakentaisit itse yli 10 vuotta työtä sovelluksen. Et ehkä tarvitse sitä aluksi, mutta lopulta haluat muun muassa turvallisuutta, kirjautumista, kansainvälistymistä. Luminus antaa sen yhdellä käskyllä.

luminuksen suurin haittapuoli on se, että monet kirjastot altistuvat suoraan. Kyllä, se antaa sinulle vallan määrittää ne kuten haluat. Mutta se tarkoittaa myös, että sinulla on paljon ymmärtää, jos haluat rakentaa oletuskäyttäytymistä. Onneksi dokumentointitarina on erinomainen. On jopa kirja, joka dokumentoi suositeltu lähestymistapa rakentaa web-sovellus Luminus.

lisäksi se on ollut olemassa jo vuosia, se on ollut käytössä suurissa sovelluksissa ja sillä on erilaisia käyttöönottovaihtoehtoja.

muut viitekehykset

nämä viitekehykset ovat mielenkiintoisia innovatiivisten lähestymistapojensa vuoksi.

Fulcro (GitHub)

Fulcro on fullstack-ratkaisu. Se käyttää Reactia frontendissa, mutta siinä on täydellinen tietomalli asiakkaasta tietokantaan. Jos tällainen yhdistävä näkemys vetoaa, kokeile sitä. Dokumentaatio on erinomaista ja sitä kehitetään edelleen aktiivisesti.

kanava

kanava on leiningeniläinen malli, joka lähestyy verkkosovelluksen rakentamista konfiguraatiokokonaisuutena. Esimerkiksi kanavassa reititys on konfiguraatio. Migraatio on konfiguraatio. Käyttämällä tätä yhdistävää, datalähtöistä lähestymistapaa, rakennat web-sovelluksen, joka voidaan ladata uudelleen deterministisesti. Puitteet näyttävät saavan vetoapua.

Tadam

Tadam on konfiguroinut useita olemassa olevia kirjastoja ja luonut standardin hakemistorakenteen, jotta yksinkertaisten sivustojen kirjoittaminen olisi erittäin helppoa. Se on vielä uusi, mutta aktiivinen.

Coast on Clojure (GitHub)

Coast on Clojure antaa sinulle täyden ratkaisun (tietokanta HTML: n palvelemiseen) keskittyen asioiden yksinkertaisuuden pitämiseen.

Hoplon (GitHub)

Hoplon on fullstack-ratkaisu, jossa on mielenkiintoinen lähestymistapa. Frontend-osa kokoaa Clojurescriptin ja voit rakentaa interaktiivisia komponentteja, jotka käyttävät laskentataulukon kaltaista dataflow-mallia. Se voi muodostaa yhteyden backend kutsumalla toimintoja, jotka ovat proxies toimintoja palvelimella. Näin voit ohittaa koko reititystilanteen. Sen kehitys on hidasta.

ei suositella

näitä kehyksiä ei suositella, koska niitä ei ole kehitetty aktiivisesti liian pitkään eikä ne ole koskaan saaneet tarpeeksi pitoa. En ole arvioinut niitä teknisten ansioiden perusteella, koska en suosittelisi niitä pelkästään niiden epäaktiivisen kehityksen perusteella.

  • webnf
  • Clojure on Coils
  • joodoo
  • Datsys

Not frameworks

näitä projekteja kutsutaan usein frameworksiksi, mutta ne eivät täytä määritelmää ”kokonaisvaltaisen lähestymistavan tarjoaminen verkkosovelluksen rakentamiseen”. En ole arvioinut niitä täällä.

Vastaa

Sähköpostiosoitettasi ei julkaista.