Elm:
Tarkistetaan, onko hakemisto olemassa
Miten:
Elm on front-end web-ohjelmointikieli, joten sillä ei ole suoraa pääsyä tiedostojärjestelmään. Kuitenkin tyypillisesti lähettäisit komennon backend-palvelulle JavaScriptissa. Tässä on kuinka voit rakentaa tällaisen vuorovaikutuksen Elmissä:
port module Main exposing (..)
-- Määrittele portti puhuaksesi JavaScriptin kanssa
port checkDir : String -> Cmd msg
-- Esimerkinkäyttö
checkDirectory : String -> Cmd Msg
checkDirectory dir =
checkDir dir
Sitten JavaScriptissäsi:
app.ports.checkDir.subscribe(function(dir) {
var exists = fs.existsSync(dir); // Tämä käyttää Noden 'fs' moduulia tarkistaakseen hakemiston
app.ports.dirExists.send(exists);
});
Takaisin Elmssä, käsittele vastaus:
port dirExists : (Bool -> msg) -> Sub msg
type Msg = DirExists Bool
subscriptions : Model -> Sub Msg
subscriptions model =
dirExists DirExists
Huomio: Tämä vaatii porttien asettamisen ja sopivan backend-käsittelyn JavaScriptissä.
Syväsukellus
Elmin selainrajoittunut ympäristö tarkoittaa, että se ei voi suoraan päästä käsiksi tiedostojärjestelmään, toisin kuin Node.js. Historiallisesti palvelinpuolen kielet ja Node.js ovat tarjonneet toiminnallisuutta tiedostojärjestelmän pääsyyn, kun taas selainkielet ovat luottaneet palvelin API:hin hallitakseen tiedostoja. Elmin tiukka tyyppijärjestelmä ei natiivisti hallitse sivuvaikutuksia, kuten I/O-operaatioita; sen sijaan, se käyttää porteja JavaScriptin yhteentoimivuuteen. Vaikka Elm itsessään ei voi tarkistaa, onko hakemisto olemassa, Elmin käyttö backend-palvelun kanssa porttien kautta mahdollistaa tämän toiminnallisuuden verkkosovelluksissa.
Vaihtoehtoja Node.js-ympäristössä sisältää metodit fs.existsSync
tai fs.access
. Elmin osalta, harkitse palvelinpuolen Elmia backendin, kuten elm-serverless
, kanssa, joka voi käsitellä tiedosto-operaatioita suoremmin kuin asiakaspuolen Elm.
Toteutuksen osalta, kun olet asettanut porttisi, Elm-sovelluksesi lähettää viestejä JavaScriptille, joka suorittaa tiedostojärjestelmän tarkistuksen. JavaScript lähettää sitten tulokset takaisin Elmiin. Tämä pitää Elmin frontend-koodin puhtaana ja vapaana sivuvaikutuksista, ylläpitäen sen arkkitehtuurin periaatteita.
Katso Myös
- Elm Virallinen Opas Porteista: https://guide.elm-lang.org/interop/ports.html
- Node.js
fs
moduulin dokumentaatio: https://nodejs.org/api/fs.html - elm-serverless palvelinpuolen Elmin vuorovaikutuksille: https://package.elm-lang.org/packages/ktonon/elm-serverless/latest/