Elm:
สร้างไฟล์ชั่วคราว
วิธีการ:
Elm ทำงานในเบราว์เซอร์ ดังนั้นจึงไม่มีสิทธิ์เข้าถึงระบบไฟล์โดยตรง ดังนั้นคุณไม่สามารถสร้างไฟล์ชั่วคราวแบบดั้งเดิมได้ แต่ถ้าคุณต้องการฟีเจอร์ที่คล้ายกัน เราใช้พอร์ตของ Elm เพื่อโต้ตอบกับ JavaScript ซึ่งสามารถจัดการการสร้างไฟล์ชั่วคราวได้
port module Main exposing (..)
-- กำหนดพอร์ตสำหรับการสร้างไฟล์ชั่วคราวใน JavaScript
port createTempFile : String -> Cmd msg
-- ส่งข้อมูลไปยัง JavaScript เพื่อสร้างไฟล์ชั่วคราว
saveDataTemporarily : String -> Cmd msg
saveDataTemporarily data =
createTempFile data
สำหรับส่วนของ JavaScript โดยใช้ File API:
app.ports.createTempFile.subscribe(function(data) {
var blob = new Blob([data], {type: 'text/plain'});
var url = URL.createObjectURL(blob);
// ที่นี่คุณสามารถใช้ URL เพื่อดาวน์โหลด blob หรือส่งต่อไปยังส่วนอื่น ๆ ของแอปของคุณ
console.log(url); // มันจะบันทึก URL ของไฟล์ชั่วคราว
});
ตัวอย่างผลลัพธ์ในคอนโซล JavaScript:
blob:null/2135a9b7-1aad-4e7a-8bce-19c4f3f6d7ff
ลงลึก
Elm ถูกออกแบบมาเพื่อความปลอดภัยและน่าเชื่อถือ ดังนั้นการเข้าถึงไฟล์ระบบโดยตรงไม่ได้อยู่ในแผน แทนที่จะใช้พอร์ตของ Elm เพื่อติดต่อกับ JavaScript ทำให้สามารถดำเนินการเช่นการสร้างไฟล์ชั่วคราวได้ ในประวัติศาสตร์ เราจัดการกับงานที่ขึ้นอยู่กับไฟล์ในเบราว์เซอร์ผ่าน JavaScript APIs โดยใช้ Elm สำหรับตรรกะระดับสูงที่ปลอดภัยตามประเภท
ในอนาคต WebAssembly อาจอนุญาตให้มีการโต้ตอบกับระบบไฟล์ได้โดยตรงมากขึ้น แต่ในขณะนี้ การใช้งานร่วมกับ JavaScript เป็นแนวปฏิบัติมาตรฐาน
ในแง่ของการดำเนินการ การสร้างไฟล์ชั่วคราวในบริบทของเบราว์เซอร์ไม่ได้หมายความถึงไฟล์จริงบนระบบไฟล์ แต่เป็นการเป็นตัวแทนในหน่วยความจำ (blob) ที่คุณสามารถทำงานได้และบันทึกตามความจำเป็น