Elm:
HTML:n jäsennys

Kuinka tehdään:

Elmissä ei ole suoraan HTML:n jäsentämiseen sisäänrakennettua kirjastoa samalla tavalla kuin JavaScriptissä tai Pythonissa, johtuen sen korostuksesta tyypiturvallisuudesta ja ajonaikaisten virheiden välttämisestä. Voit kuitenkin käyttää Http-pyyntöjä sisällön noutamiseen ja sitten käyttää säännöllisiä lausekkeita tai palvelinpuolen käsittelyä tarvittavien tietojen poimimiseen. Monimutkaisempaan HTML:n jäsentämiseen yleinen lähestymistapa on käyttää omistettua taustapalvelua HTML:n jäsentämiseen ja datan palauttamiseen muodossa, jonka Elm voi suoraan käsitellä, kuten JSON.

Tässä on esimerkki HTML-sisällön noutamisesta (olettaen, että palvelimen vastaus on selkeässä muodossa tai erityisen tagin sisältö):

import Browser
import Html exposing (Html, text)
import Http

type alias Model =
    { content : String }

initialModel : Model
initialModel =
    { content = "" }

type Msg
    = Fetch
    | ReceiveContent String

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        Fetch ->
            ( model
            , Http.get
                { url = "https://example.com"
                , expect = Http.expectString ReceiveContent
                }
            )

        ReceiveContent content ->
            ( { model | content = content }
            , Cmd.none
            )

view : Model -> Html Msg
view model =
    text model.content

-- Oletetaan, että pääfunktio ja tilausten määrittelyt noudattavat Elmin standardin sovellusrakennetta.

Vastauksen käsittelyyn todellisen elementtien tai tietojen jäsentämiseksi saatat harkita HTML-sisällön lähettämistä hallinnoimallesi palvelinpäätepisteelle, jossa voit käyttää kielissä kuten JavaScript (Cheerio, Jsdom) tai Python (BeautifulSoup, lxml) saatavilla olevia kirjastoja jäsentämiseen, ja sitten palauttaa rakenteellista dataa (kuten JSON) takaisin Elm-sovellukseesi.

Muista, että HTML:n suora jäsentäminen client-side Elm-koodissa ei ole tyypillistä johtuen kielirajoituksista ja filosofiasta, joka kannustaa selkeään eroon sisällön noudon ja sisällön käsittelyn välillä. Elmin arkkitehtuuri suosii datan käsittelyä turvallisemmassa, ennustettavammassa muodossa, kuten JSON.