একটি টেক্সট ফাইল লিখা

Elm:
একটি টেক্সট ফাইল লিখা

কিভাবে:

যেহেতু Elm ব্রাউজারে চলে এবং এটি বিনা সাইড ইফেক্টের একটি পিউর প্রোগ্রামিং ভাষা হওয়ার জন্য ডিজাইন করা হয়েছে, এটির সরাসরি ফাইল সিস্টেমে প্রবেশাধিকার নেই। সুতরাং, ফাইলে লেখা সাধারণত জাভাস্ক্রিপ্টে ডেটা পাঠানোর মাধ্যমে সম্পন্ন হয় পোর্টের মাধ্যমে। এখানে আপনি কিভাবে এটা সেটআপ করতে পারেন:

  1. জাভাস্ক্রিপ্টে টেক্সট পাঠানোর জন্য একটি পোর্ট মডিউল সংজ্ঞায়িত করুন:
port module Main exposing (main)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)

-- জাভাস্ক্রিপ্টে টেক্সট ডেটা পাঠানোর জন্য একটি পোর্ট সংজ্ঞায়িত করুন
port saveText : String -> Cmd msg

-- মূল ভিউ
view : Html msg
view =
    div []
        [ button [ onClick (saveText "Hello, Elm writes to a file!") ] [ text "Save to File" ]
        ]

-- সাবস্ক্রিপশন সেটআপ (এই উদাহরণে ব্যবহৃত নয় তবে একটি পোর্ট মডিউলের জন্য দরকারি)
subscriptions : model -> Sub msg
subscriptions _ =
    Sub.none

-- অ্যাপ্লিকেশন সেটআপ
main : Program () model msg
main =
    Browser.element
        { init = \_ -> ((), Cmd.none)
        , view = \_ -> view
        , update = \_ _ -> ((), Cmd.none)
        , subscriptions = subscriptions
        }
  1. সম্পর্কিত জাভাস্ক্রিপ্ট কোড বাস্তবায়ন করুন:

আপনার HTML ফাইলে অথবা একটি জাভাস্ক্রিপ্ট মডিউলে, Elm অ্যাপ্লিকেশনের টেক্সট সংরক্ষণের জন্য পোর্ট সম্পাদনা করুন। আপনি ক্লায়েন্ট সাইডে ফাইল সংরক্ষণের জন্য FileSaver.js লাইব্রেরি ব্যবহার করতে পারেন অথবা সার্ভারে প্রক্রিয়াকরণের জন্য ডেটা পাঠাতে পারেন।

// ধরে নেওয়া হচ্ছে Elm.Main.init() ইতিমধ্যে কল করা হয়েছে এবং অ্যাপ চলছে
app.ports.saveText.subscribe(function(text) {
    // ক্লায়েন্ট সাইডে ফাইল সংরক্ষণের জন্য FileSaver.js ব্যবহার করা
    var blob = new Blob([text], {type: "text/plain;charset=utf-8"});
    saveAs(blob, "example.txt");
});

সরাসরি অ্যাপ্লিকাবল স্যাম্পল আউটপুট নেই, কারণ ফলাফল হল একটি ফাইলের সৃষ্টি, তবে আপনার Elm অ্যাপ্লিকেশনে বোতামে ক্লিক করার পরে, “Hello, Elm writes to a file!” ধারণকারী একটি ফাইল “example.txt” ডাউনলোড হওয়া উচিত আপনার কম্পিউটারে।

এই পদ্ধতিতে, Elm এবং জাভাস্ক্রিপ্টের মধ্যে যোগাযোগ অপরিহার্য। যদিও Elm আপনার অ্যাপ্লিকেশনের যতটা সম্ভব যুক্তি ধারণ করার লক্ষ্য রাখে, পোর্টের মাধ্যমে জাভাস্ক্রিপ্টের সাথে ইন্টারোপ আপনাকে Elm সরাসরি সমর্থন করে না এমন কাজ পারফর্ম করতে সক্ষম করে। মনে রাখবেন, Elm এর পবিত্রতা এবং নিরাপত্তা এই প্যাটার্ন দ্বারা উন্নত হয়, যা আপনার Elm অ্যাপ্লিকেশনগুলি বাহ্যিক জটিল পৃথিবীর সাথে মিথস্ক্রিয়া করলেও তা বজায় রাখতে এবং যৌক্তিক করে তোলে।