Elm:
การอ่านไฟล์ข้อความ
วิธีการ:
Elm มุ่งเน้นไปที่การพัฒนาเว็บด้านหน้าเป็นหลัก ซึ่งการเข้าถึงระบบไฟล์โดยตรงจะเป็นไปไม่ได้เนื่องจากเหตุผลด้านความปลอดภัย แทนที่จะเป็นการจัดการกับการอัพโหลดไฟล์จากผู้ใช้ นี่คือวิธีที่คุณสามารถอ่านไฟล์ข้อความที่ผู้ใช้เลือก:
module Main exposing (..)
import Browser
import File exposing (File)
import File.Selector as Selector
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
type alias Model =
{ fileContent : String }
type Msg
= SelectFile
| ReceiveFileContent (Result () String)
init : Model
init =
{ fileContent = "" }
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
SelectFile ->
(model, fileSelectCmd)
ReceiveFileContent (Ok content) ->
({ model | fileContent = content }, Cmd.none)
ReceiveFileContent (Err _) ->
(model, Cmd.none)
fileSelectCmd : Cmd Msg
fileSelectCmd =
File.select [ Selector.accept "text/*" ] { onDone = ReceiveFileContent }
view : Model -> Html Msg
view model =
div []
[ button [ onClick SelectFile ] [ text "เลือกไฟล์ข้อความ" ]
, div [] [ text model.fileContent ]
]
main : Program () Model Msg
main =
Browser.sandbox { init = init, update = update, view = view }
เรียกใช้โค้ดในเบราว์เซอร์ของคุณ คลิกที่ปุ่ม และเลือกไฟล์ข้อความ มันจะแสดงเนื้อหาในแอปพลิเคชั่น Elm ของคุณ
การศึกษาเพิ่มเติม
Elm ไม่สามารถอ่านไฟล์จากระบบไฟล์ของเซิร์ฟเวอร์โดยตรง - มันไม่ได้ถูกออกแบบมาสำหรับการดำเนินการที่ด้านเซิร์ฟเวอร์ แทนที่จะเป็นการจัดการการป้อนข้อมูลไฟล์ผ่าน API ไฟล์ในเบราว์เซอร์ โดยปกติจะถูกกระตุ้นโดยการกระทำของผู้ใช้ เช่น การเลือกไฟล์หรือการเคลื่อนย้ายไฟล์แบบลากและวาง มันเป็นมาตรการด้านความปลอดภัย
ในอดีตคุณอาจใช้ JavaScript และ Node.js เพื่ออ่านไฟล์ในด้านเซิร์ฟเวอร์ หรือใช้ XMLHttpRequest (XHR) สำหรับการอ่านข้างลูกค้าโดยไม่ต้องมีการโต้ตอบจากผู้ใช้ ซึ่งมีโมเดลความปลอดภัยและความสามารถที่แตกต่างกัน
โมดูล File
และ File.Selector
ใน Elm ทำให้การจัดการการอ่านไฟล์ในเบราว์เซอร์ค่อนข้างราบรื่น แต่จำไว้ว่าปรัชญา “ไม่มีผลข้างเคียง” ของ Elm นั่นหมายความว่าการอ่านไฟล์ถูกควบคุมอย่างเข้มงวด โดยต้องการการกระทำจากผู้ใช้อย่างชัดเจน นอกจากนี้การแยกวิเคราะห์และถอดรหัสเนื้อหาไฟล์ต้องระมัดระวังเพื่อให้ตรงกับการพิมพ์แบบแข็งของ Elm
ดูเพิ่มเติม
- เอกสาร API ไฟล์ของ Elm อย่างเป็นทางการ: https://package.elm-lang.org/packages/elm/file/latest/
- คู่มือต่อคำสั่งและการสมัครรับข้อมูลของ Elm (สำหรับการเข้าใจการดำเนินการอื่นๆ): https://guide.elm-lang.org/effects/
- Elm Discuss สำหรับคำถามและการติดต่อกับชุมชน: https://discourse.elm-lang.org/