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