Elm架構
Elm是一個能夠編譯成Javascript的函式語言,它可以像React那樣作為一個工具用來建立網站或網站應用,Elm 非常簡單 易用和優質。
Elm作為函式語言有以下特點:
1.沒有執行時的錯誤,沒有null. 沒有undefined is not a function.
2.錯誤資訊友好,能夠幫助你更快速加入功能。
3.良好架構的程式碼意味著你的應用程式碼以良好的構架增長。
4.對所有Elm包自動執行語義版本。.
下面以一個計數器為案例:
注意update和 view是完全解耦的,你可以以宣告方式描述你的HTML,而Elm會負責與DOM打交道。
Elm是一個針對無限巢狀元件的簡單模式,它非常模組化,易於程式碼重用和測試,能夠幫助你方便建立複雜的Web應用。
每個Elm程式邏輯被劃分為三個清晰部分:
Model — 你的應用狀態
Update — 更新狀態的方式
View — 將狀態作為HTML顯示的方式
Elm架構是一種簡單架構Web應用的模式,類似Redux一樣宣告,這也是它越來越流行的原因。
這個模式非常可靠,可以下面虛擬碼說明,每次使用只要填空細節就可以:
更詳細說明見:http://guide.elm-lang.org/architecture/index.html
Elm 0.17釋出以後,引入了訊息訂閱透過Websocket獲得後臺狀態,只需要兩行程式碼就可以實現和後端伺服器互動:
WebSocket.send "ws://echo.websocket.org" input
WebSocket.listen "ws://echo.websocket.org" NewMessage
第一句是向伺服器發出資料,第二句是監聽伺服器的資料,資料內容在NewMessage,NewMessage內容會自動餵給update。
而如果使用Javascript實現這段通訊,將會是非常麻煩,你需要建立一個新的web socket!然後開啟一個連線,但是還不能忘記加入對錯誤的監聽,以便連線失敗能夠重新再連線,並且定義在沒有連線時不要發訊息(這屬於執行錯誤),你還需要對訊息佇列化然後再傳送,然後確定websocket能被使用並且關閉等等,這些都是涉及大量細節,而宣告式程式設計就應該如上面兩行程式碼直接宣告使用,去除了大量技術細節。
Elm作為函式語言有以下特點:
1.沒有執行時的錯誤,沒有null. 沒有undefined is not a function.
2.錯誤資訊友好,能夠幫助你更快速加入功能。
3.良好架構的程式碼意味著你的應用程式碼以良好的構架增長。
4.對所有Elm包自動執行語義版本。.
下面以一個計數器為案例:
import Html exposing (Html, button, div, text) import Html.App as Html import Html.Events exposing (onClick) main = Html.beginnerProgram { model = 0, view = view, update = update } type Msg = Increment | Decrement update msg model = case msg of Increment -> model + 1 Decrement -> model - 1 view model = div [] [ button [ onClick Decrement ] [ text "-" ] , div [] [ text (toString model) ] , button [ onClick Increment ] [ text "+" ] ] <p class="indent"> |
注意update和 view是完全解耦的,你可以以宣告方式描述你的HTML,而Elm會負責與DOM打交道。
Elm是一個針對無限巢狀元件的簡單模式,它非常模組化,易於程式碼重用和測試,能夠幫助你方便建立複雜的Web應用。
每個Elm程式邏輯被劃分為三個清晰部分:
Model — 你的應用狀態
Update — 更新狀態的方式
View — 將狀態作為HTML顯示的方式
Elm架構是一種簡單架構Web應用的模式,類似Redux一樣宣告,這也是它越來越流行的原因。
這個模式非常可靠,可以下面虛擬碼說明,每次使用只要填空細節就可以:
import Html exposing (..) -- MODEL type alias Model = { ... } -- UPDATE type Msg = Reset | ... update : Msg -> Model -> Model update msg model = case msg of Reset -> ... ... -- VIEW view : Model -> Html Msg view model = ... <p class="indent"> |
更詳細說明見:http://guide.elm-lang.org/architecture/index.html
Elm 0.17釋出以後,引入了訊息訂閱透過Websocket獲得後臺狀態,只需要兩行程式碼就可以實現和後端伺服器互動:
WebSocket.send "ws://echo.websocket.org" input
WebSocket.listen "ws://echo.websocket.org" NewMessage
第一句是向伺服器發出資料,第二句是監聽伺服器的資料,資料內容在NewMessage,NewMessage內容會自動餵給update。
而如果使用Javascript實現這段通訊,將會是非常麻煩,你需要建立一個新的web socket!然後開啟一個連線,但是還不能忘記加入對錯誤的監聽,以便連線失敗能夠重新再連線,並且定義在沒有連線時不要發訊息(這屬於執行錯誤),你還需要對訊息佇列化然後再傳送,然後確定websocket能被使用並且關閉等等,這些都是涉及大量細節,而宣告式程式設計就應該如上面兩行程式碼直接宣告使用,去除了大量技術細節。
相關文章
- Elm 語言初體驗
- Elm 語言開發微信小程式微信小程式
- 架構之:serverless架構架構Server
- SaaS架構:流程架構分析架構
- Elm 中使用子模組的一種方法
- Elm入門實踐(三)——進階篇
- ELM327 藍芽/WIFI/USB diagnostic interface藍芽WiFi
- 【細品架構4/100】架構之架構切分架構
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 單體架構&微服務架構&中臺服務架構架構微服務
- 架構之:資料流架構架構
- 前端架構之小小node架構前端架構
- 邏輯架構和物理架構架構
- 軟體架構與架構師架構
- 單體架構到垂直架構架構
- 架構架構
- 業務架構、資訊架構、技術架構三位一體架構
- 書籍:精益架構(敏捷架構 瘦架構 Lean Architecture)架構敏捷
- 架構演進之「微服務架構」架構微服務
- MySQL 高可用架構之 MMM 架構MySql架構
- 架構之:微服務架構漫談架構微服務
- 架構之:軟體架構漫談架構
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 【架構分析】MESA (EGL/GLES)架構分析架構
- REST架構風格的架構元素REST架構
- 網站架構及架構演變網站架構
- 架構C01: 什麼是架構?為什麼做架構?架構師需要做什麼?架構
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- 架構師眼中的高併發架構架構
- 架構設計之一——基礎架構架構
- Java架構-到底什麼才是業務架構?Java架構
- 軟體架構模式之微服務架構架構模式微服務
- LNMP架構與LNAMP架構的區別LNMP架構
- IT架構之IT架構模型——思維導圖架構模型
- bs架構與cs架構的區別架構
- 架構設計之架構的演變架構
- 軟體架構風格——規則架構架構
- 業務架構架構