Elm:
การเขียนไฟล์ข้อความ
วิธีการ:
เนื่องจาก Elm ทำงานในเบราว์เซอร์และออกแบบมาเพื่อเป็นภาษาโปรแกรมมิ่งที่บริสุทธิ์โดยไม่มีผลกระทบด้านข้าง จึงไม่มีการเข้าถึงระบบไฟล์โดยตรง ดังนั้น การเขียนไปยังไฟล์มักเกี่ยวข้องกับการส่งข้อมูลออกไปยัง JavaScript ผ่านพอร์ต นี่คือวิธีการตั้งค่า:
- กำหนดโมดูลพอร์ตสำหรับการส่งข้อความไปยัง JavaScript:
port module Main exposing (main)
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
-- กำหนดพอร์ตเพื่อส่งข้อมูลข้อความไปยัง JavaScript
port saveText : String -> Cmd msg
-- มุมมองหลัก
view : Html msg
view =
div []
[ button [ onClick (saveText "Hello, Elm writes to a file!") ] [ text "บันทึกลงไฟล์" ]
]
-- การตั้งค่าการสมัครสมาชิก (ไม่ได้ใช้ในตัวอย่างนี้แต่ต้องการสำหรับโมดูลพอร์ต)
subscriptions : model -> Sub msg
subscriptions _ =
Sub.none
-- การตั้งค่าแอปพลิเคชัน
main : Program () model msg
main =
Browser.element
{ init = \_ -> ((), Cmd.none)
, view = \_ -> view
, update = \_ _ -> ((), Cmd.none)
, subscriptions = subscriptions
}
- การดำเนินการรหัส JavaScript ที่สอดคล้องกัน:
ในไฟล์ HTML หรือโมดูล JavaScript ของคุณ จัดการพอร์ตของแอปพลิเคชัน 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 ของคุณ ไฟล์ที่ชื่อว่า “example.txt” ซึ่งมีสตริง “Hello, Elm writes to a file!” ควรจะถูกดาวน์โหลดมายังคอมพิวเตอร์ของคุณ
ในแนวทางนี้ การสื่อสารระหว่าง Elm กับ JavaScript มีความสำคัญ แม้ว่า Elm มีเป้าหมายที่จะรวมตรรกะส่วนใหญ่ของแอปพลิเคชันของคุณไว้ด้วยกัน การทำงานร่วมกับ JavaScript ผ่านพอร์ตช่วยให้คุณสามารถทำงานเช่นการเขียนไฟล์ได้ซึ่ง Elm ไม่รองรับโดยตรง จำไว้ว่า ความบริสุทธิ์และความปลอดภัยของ Elm ได้รับการเสริมแต่งโดยรูปแบบนี้ ช่วยให้แอปพลิเคชัน Elm ของคุณยังคงง่ายต่อการดูแลและใคร่ครวญ แม้ว่าจะต้องโต้ตอบกับโลกภายนอกที่ซับซ้อน