Elm:
การใช้งานโปรแกรมดีบักเกอร์

วิธีการ:

Elm ไม่มีดีบักเกอร์ในตัวอย่างที่ผู้ใช้เคยเห็นในภาษาอื่นๆ เช่น JavaScript บนเครื่องมือพัฒนาเบราว์เซอร์ อย่างไรก็ตาม ชุมชน Elm ได้พัฒนาเครื่องมือเพื่อเติมเต็มช่องว่างนี้ นี่คือวิธีที่คุณสามารถใช้ elm-debug-transformer เพื่อดีบักร์แอป Elm ของคุณ:

-- ติดตั้ง elm-debug-transformer (แพ็คเกจของ Node)

1. npm install -g elm-debug-transformer

-- ใช้ elm-debug-transformer เพื่อเริ่มแอปของคุณ

2. elm-debug-transformer --port=8000 yourMainElmFile.elm 

เมื่อ elm-debug-transformer เริ่มทำงาน, มันจะสร้างการเชื่อมต่อ WebSocket สำหรับการบันทึกข้อมูล คุณจะเห็นข้อมูลดีบักในคอนโซลของเบราว์เซอร์ของคุณ เพื่อตรวจสอบโครงสร้างข้อมูลของโปรแกรมในจุดต่างๆ ของแอปพลิเคชั่นของคุณ

ใน Elm 0.19 และใหม่กว่า, ฟังก์ชันในโมดูล Debug เช่น Debug.log และ Debug.todo สามารถช่วยคุณติดตามค่าและทำเครื่องหมายบางส่วนของโค้ดที่ยังทำไม่เสร็จได้อย่างตั้งใจ นี่คือวิธีการใช้ Debug.log:

import Debug

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Increment ->
            ( Debug.log "Incrementing" { model | count = model.count + 1 }, Cmd.none )

        Decrement ->
            ( Debug.log "Decrementing" { model | count = model.count - 1 }, Cmd.none )

คุณจะเห็นข้อความ “Incrementing” หรือ “Decrementing” ในคอนโซลของเบราว์เซอร์คุณพร้อมกับสถานะใหม่ของ model

การศึกษาลึก

Evan Czaplicki ผู้สร้าง Elm มีเป้าหมายที่จะทำให้ภาษาที่มีข้อบกพร่องในปกติที่เกิดขึ้นเป็นไปไม่ได้หรือง่ายต่อการจับได้ นี่คือเหตุผลว่าทำไมหลักของ Elm ไม่รวมฟังก์ชันดีบักแบบดั้งเดิม การวิเคราะห์แบบสถิติและการอนุมานประเภทของ Elm มีส่วนช่วยลดข้อผิดพลาดเวลาทำงานอย่างมาก ซึ่งลดความจำเป็นในการดีบักเวลาทำงานที่ซับซ้อน ทางเลือกในอดีตรวมถึงการใช้elm-reactor ที่ให้ฟีเจอร์การดีบักแบบย้อนเวลา—วิธีในการย้อนกลับและเล่นซ้ำการกระทำในแอปของคุณซึ่งตอนนี้ไม่ควรใช้แล้ว

ปัจจุบัน เครื่องมือเช่น elm-debug-transformer และการใช้โมดูล Debug ของ Elm ช่วยเติมเต็มช่องว่าง ในขณะที่โมดูล Debug มีจุดประสงค์สำหรับการใช้งานในระหว่างการพัฒนาเท่านั้นและควรถูกลบออกก่อนการสร้างขั้นตอนการผลิต มันเป็นเครื่องมือที่มีค่ามากสำหรับการระบุและบันทึกการเปลี่ยนแปลงสถานะ

จำไว้ว่าเทคนิคการดีบักของ JavaScript แบบดั้งเดิม เช่น จุดหยุดหรือการดำเนินการทีละขั้นตอน ไม่สามารถใช้ได้โดยตรงใน Elm เนื่องจากโครงสร้างและ Elm runtime การจัดการอัพเดทสถานะ Elm แนะนำให้คุณโครงสร้างโปรแกรมให้อยู่ในลักษณะที่การไหลข้อมูลเป็นไปอย่างชัดเจน ทำตามประเภทข้อมูลและรับประกันมิวเทเบิลที่ชัดเจน ลดกรณีที่จำเป็นต้องดีบัก

ดูเพิ่มเติม