একটি ওয়েবপেজ ডাউনলোড করা

Elm:
একটি ওয়েবপেজ ডাউনলোড করা

কিভাবে:

Elm এ HTTP অনুরোধের মতো সাইড ইফেক্টগুলিকে কমান্ড হিসেবে গঠন করতে হয়। আপনি Http মডিউল ব্যবহার করে ডেটা ফেচ করবেন এবং রেসপন্স হ্যান্ডেল করবেন।


module Main exposing (main)

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

type alias Model =
    { content : String }

type Msg
    = GotText (Result Http.Error String)

init : ( Model, Cmd Msg )
init =
    ( Model ""
    , fetchPage "https://api.example.com/data"
    )

fetchPage : String -> Cmd Msg
fetchPage url =
    Http.get { url = url, expect = Http.expectString GotText }

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        GotText (Ok data) ->
            ( { model | content = data }, Cmd.none )

        GotText (Err _) ->
            ( { model | content = "Error: Could not fetch page." }, Cmd.none )

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

main : Program () Model Msg
main =
    Browser.sandbox { init = init, update = update, view = view }

সফল ফেচের ক্ষেত্রে, আপনার মডেলের content এ পৃষ্ঠার বিষয়বস্তু থাকবে। ত্রুটির ক্ষেত্রে, এটি একটি সাধারণ ত্রুটি বার্তা ধারণ করবে।

গভীর ডাইভ

Elm সাইড ইফেক্টকে একটি ডাটা হিসেবে ব্যবহার করে, যার মানে হল HTTP অনুরোধগুলি Elm রানটাইম দ্বারা পরিচালিত হয়, আপনার কোডে সরাসরি নয়। ঐতিহাসিকভাবে, এটি JavaScript এর মতো ভাষাগুলি থেকে একটি প্রত্যাহার ছিল, যেখানে সাইড ইফেক্টগুলি আরও ফ্রি-উইলিং। অন্যান্য ভাষায় বিকল্পগুলি হতে পারে JavaScript এর fetch অথবা Python-এর requests। Elm এর এই পদ্ধতি আপনার অ্যাপকে পূর্বানুমানযোগ্য এবং রক্ষণাবেক্ষণ যোগ্য রাখে সাইড ইফেক্টগুলিকে টাইপে এনকোড করে এবং পরিবর্তনগুলি পরিচালনা করার জন্য একটি কেন্দ্রীয় update ফাংশন ব্যবহার করে।

Http মডিউলটি Elm এ সর্বদা ছিল না। প্রাথমিক সংস্করণে AJAX নিজেই তৈরী করা হয়েছিল, যা বিব্রতকর ছিল। এখন, Http বিভিন্ন কেস হ্যান্ডল করার জন্য বিভিন্ন ফাংশন প্রদান করে, যেমন JSON অথবা স্ট্রিংগুলি প্রত্যাশা করে, যা এটিকে ব্যবহারকারীর জন্য বন্ধুত্বপূর্ণ করে তোলে।

বাস্তবায়নের দিক থেকে, fetchPage কল করার সময়, Elm আপনার update ফাংশনে ফলাফলের সাথে একটি বার্তা পাঠায়। এটি হয় Ok data হবে যদি এটি সফল হয় অথবা Err error যদি এটি ব্যর্থ হয়। আপনি এই ফলাফলগুলি সহ প্যাটার্ন-ম্যাচ করেন এবং আপনার Model এবং ভিউকে উপযুক্তভাবে আপডেট করেন।

দেখুন এও