Elm:
Sử dụng bộ gỡ lỗi

Cách thức:

Elm không có bộ gỡ lỗi tích hợp trong bản thân nó theo nghĩa truyền thống như, ví dụ, JavaScript với công cụ phát triển trình duyệt. Tuy nhiên, cộng đồng Elm đã xây dựng các công cụ để lấp đầy khoảng trống này. Dưới đây là cách bạn có thể sử dụng elm-debug-transformer để gỡ lỗi ứng dụng Elm của bạn:

-- Cài đặt elm-debug-transformer (Gói Node)

1. npm install -g elm-debug-transformer

-- Sử dụng elm-debug-transformer để khởi động ứng dụng của bạn

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

Khi elm-debug-transformer đang chạy, nó tạo một kết nối WebSocket để ghi nhật ký. Bạn sẽ thấy thông tin gỡ lỗi trong bảng điều khiển của trình duyệt, nơi bạn có thể kiểm tra cấu trúc dữ liệu của chương trình tại các điểm nhất định trong ứng dụng của bạn.

Trong Elm 0.19 và sau đó, các hàm của mô-đun Debug như Debug.logDebug.todo có thể giúp bạn theo dõi giá trị và đánh dấu một cách cố ý các phần của mã chưa hoàn thiện. Dưới đây là cách sử dụng Debug.log:

import Debug

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

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

Bạn sẽ thấy thông điệp “Tăng” hoặc “Giảm” trong bảng điều khiển của trình duyệt cùng với trạng thái mới của model.

Sâu hơn

Tác giả của Elm, Evan Czaplicki, đã hướng đến việc tạo ra một ngôn ngữ mà các lỗi phổ biến sẽ không thể xảy ra hoặc dễ dàng bị bắt. Đây là lý do tại sao nhân của Elm không bao gồm các hàm gỡ lỗi truyền thống. Phân tích tĩnh và suy luận kiểu của Elm đóng góp rất lớn trong việc giảm thiểu lỗi thời gian chạy, giảm nhu cầu về gỡ lỗi thời gian chạy phức tạp. Các lựa chọn thay thế trong quá khứ bao gồm sử dụng elm-reactor đã lỗi thời, vốn đã cung cấp gỡ lỗi điều hành thời gian - một cách để tua ngược và phát lại các hành động trong ứng dụng của bạn.

Ngày nay, các công cụ như elm-debug-transformer và việc sử dụng mô-đun Debug của Elm giúp cầu nối khoảng cách. Mặc dù mô-đun Debug chỉ dành cho quá trình phát triển và nên được loại bỏ trước khi xây dựng sản xuất, nó là một công cụ không thể thiếu để xác định và ghi lại các thay đổi trạng thái.

Hãy nhớ rằng, các kỹ thuật gỡ lỗi JavaScript truyền thống, như điểm dừng hoặc thực thi từng bước, không trực tiếp áp dụng được trong Elm do kiến trúc của nó và Elm runtime xử lý cập nhật trạng thái. Elm khuyến khích bạn cấu trúc chương trình của mình theo cách dữ liệu dòng chảy rõ ràng và tuân theo các đảm bảo về kiểu và không thay đổi, giảm thiểu trường hợp cần gỡ lỗi.

Xem thêm