Elm:
HTML পার্স করা
কিভাবে:
Elm এ টাইপ নিরাপত্তা এবং রানটাইম ত্রুটি এড়ানোর উপর জোর দেওয়ার কারণে, JavaScript বা Python এর মতো লাইব্রেরিগুলির মতো সরাসরি HTML পার্স করার জন্য কোনো নির্মিত লাইব্রেরি নেই। তবে, আপনি Http
অনুরোধ ব্যবহার করে কন্টেন্ট আনার পরে প্রয়োজনীয় তথ্য নির্যাসের জন্য নিয়মিত এক্সপ্রেশন বা সার্ভার-সাইড প্রসেসিং ব্যবহার করতে পারেন। আরও জটিল HTML পার্সিংয়ের জন্য, একটি প্রচলিত পদ্ধতি হলো একটি নির্দিষ্ট ব্যাকএন্ড সার্ভিস ব্যবহার করা যেটি HTML পার্স করে এবং Elm সরাসরি কাজ করতে পারে এমন ফর্ম্যাটে ডেটা ফেরত পাঠায়, যেমন JSON।
এখানে HTML কন্টেন্ট আনার একটি উদাহরণ রয়েছে (ধরে নেওয়া হলো সার্ভারের প্রতিক্রিয়া একটি পরিষ্কার ফর্ম্যাটে আছে অথবা নির্দিষ্ট ট্যাগের কন্টেন্ট):
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
-- ধরে নেওয়া যাক মেইন ফাংশন এবং সাবস্ক্রিপশনের সংজ্ঞা Elm এর মানক অ্যাপ্লিকেশন কাঠামো অনুসরণ করে।
প্রক্রিয়া করার জবাবটি আসলে নির্দিষ্ট উপাদান বা তথ্য পার্স করা বিবেচনা করা হয়, আপনি HTML কন্টেন্টটি আপনার নিয়ন্ত্রণে থাকা একটি সার্ভার এন্ডপয়েন্টে পাঠাতে চাইতে পারেন, যেখানে আপনি JavaScript (Cheerio, Jsdom) বা Python (BeautifulSoup, lxml) এর মতো ভাষায় পার্সিংয়ের জন্য উপলব্ধ লাইব্রেরিগুলি ব্যবহার করতে পারেন, এবং তারপর গঠনমূলক ডেটা (যেমন JSON) ফিরে আপনার Elm অ্যাপ্লিকেশনে পাঠাতে পারেন।
মনে রাখবেন, সরাসরি ক্লায়েন্ট-সাইড Elm কোডে HTML পার্সিং টিপিক্যাল প্যাটার্ন নয় ভাষার বাধানিষেধ এবং কন্টেন্ট ফেচিং এবং কন্টেন্ট প্রসেসিং এর মধ্যে একটি স্পষ্ট পার্থক্য উৎসাহিত করার দর্শনের কারণে। Elm আর্কিটেকচার ডেটা প্রসেসিং একটি নিরাপদ, আরও পূর্বানুমানযোগ্য ফর্ম্যাটে করার দিকে ঝুঁকে থাকে, যেমন JSON।