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 แนะนำให้คุณโครงสร้างโปรแกรมให้อยู่ในลักษณะที่การไหลข้อมูลเป็นไปอย่างชัดเจน ทำตามประเภทข้อมูลและรับประกันมิวเทเบิลที่ชัดเจน ลดกรณีที่จำเป็นต้องดีบัก
ดูเพิ่มเติม
- คู่มืออย่างเป็นทางการของ Elm เกี่ยวกับการจัดการข้อยกเว้นเวลาทำงาน: https://guide.elm-lang.org/error_handling/
- ที่เก็บ GitHub ของ
elm-debug-transformer
: https://github.com/kraklin/elm-debug-transformer - กระทู้ Elm discourse ที่อภิปรายเกี่ยวกับกลยุทธ์การดีบัก: https://discourse.elm-lang.org/c/show-and-tell/debugging
- เอกสารประกอบโมดูล
Debug
ของ Elm: https://package.elm-lang.org/packages/elm/core/latest/Debug