Kontrollera om en katalog finns

Elm:
Kontrollera om en katalog finns

Hur man gör:

Eftersom Elm är inriktad på front-end utveckling och körs i webbläsare, hanterar det inte direkt åtkomst till filsystemet. Du kan dock kommunicera med en server via HTTP för att kontrollera en katalog. Här är ett fiktivt exempel:

import Http
import Json.Decode as Decode

type Msg = DirectoryExists Bool | DirectoryCheckFailed Http.Error

checkDirectory : String -> Cmd Msg
checkDirectory url =
    Http.get
        { url = url
        , expect = Http.expectJson (Decode.map DirectoryExists Decode.bool)
        }

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        DirectoryExists exists ->
            ( { model | directoryExists = Just exists }
            , Cmd.none
            )

        DirectoryCheckFailed _ ->
            ( { model | directoryExists = Just False }
            , Cmd.none
            )

-- Antag att servern svarar med en enkel JSON: { "exists": true } eller { "exists": false }

I exemplet görs ett anrop till en server Endpoint som förväntar sig en JSON med en boolean exists-nyckel för att signalera om katalogen finns.

Fördjupning

I Elm’s värld hanterar vi inte direkt filsystemet eftersom det körs i en webbläsarmiljö. Historiskt sett har tillgång till filsystemet begränsats i klient-side programmering på grund av säkerhetsrisker. Alternativt, kan du använda JavaScript interop-funktionen, ports, för att kommunicera med JavaScript-kod som har tillgång till filsystemet (i en Node.js-miljö). Implementationen kräver att du skickar meddelanden mellan Elm och JavaScript, där JS-sidan kan använda inbyggda API:er som fs för att kontrollera filsystemet.

Se även