日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elm 语言初体验

發布時間:2025/3/21 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elm 语言初体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上個周末兩天一直在看Elm,這是一門函數式編程語言。所謂函數式編程(Functional Programming,FP),跟面向對象編程(Object Oriented,OO)是同一種類型的概念,是一種編程模式。具體什么叫函數式編程,它有什么特征,有什么優勢,這里不作具體解釋。只放出一個大膽的預言,就是在未來,尤其是在Server端,將會是函數式編程的天下。
Anyway,Elm是一門函數式編程語言,它是一門靜態的,強類型的語言,目前主要targeting在Web端,因此它有一個compiler可以編譯成JS。
目前,編譯成JS的語言已經有非常多了,如CoffeeScript,TypeScript,PureScript等等,甚至很多現有的general purpose語言現在也有了一些工具,用來把它們編譯成JS,如Clojure 有ClojureScript,Scala有Scalajs,Ruby有Opal等等等等。
為什么有這么多的新語言編譯成JS,又有這么多工具把其它語言編譯成JS呢?這些說白了其實都是想取代JS,這說明一個問題,那就是JS不夠好,這個跟JVM上面有這么多語言原因是類似的。
Elm也是出于同樣的原因,它想要發明一種全新的Web語言,用于取代JS。那在這么多語言中,Elm的優勢是什么?
經過這兩天的接觸,我了解到它的優勢有以下幾個:

  • No Runtime Error。”Undefined is not a function” 有沒有遇到過?如果你做過一段時間前端開發,你不可能沒有遇到過這個問題。類似的Runtime Error還有非常多。然而,Elm聲稱可以完成避免Runtime Error!這絕對是無可比擬的一個優勢。美國的一家公司NoRedLink聲稱,他們的產品上線一年多,目前遇到的Runtime Error是0個!這個還是非常有誘惑力的。
  • 純粹的函數式編程,Immutable data和pure function,讓你的代碼變得干凈,0耦合,不易出錯,容易重構,易讀,易測。這些都是JS界目前大力推進的方向啊,不然要immutable.js干嗎?要Ramda干嗎?要RxJs干嗎?
  • 有一個“官方”的App architecture,這是一個非常優秀的architecture,有多優秀?Redux大家都知道,現在其實已經是Web app實際上的標準architecture,然而Redux的思想其實是從Elm的architecture學來的!

    Redux evolves the ideas of Flux, but avoids its complexity by taking cues from Elm.
    ---- redux.js.org/

  • 總之,我覺得這個視頻里面有一句話總結得非常好,那就是Elm是現在整個JS界的發展趨勢,然而JS還有很長一段路要走。

    那Elm完美的嗎?當然不是,我這兩天接觸下來,發現它仍然處于比較年輕的狀態,雖然官方聲稱它已經production ready,也確實有好一些公司已經用于正式的產品中。然而我相信都不是很容易的事情。目前來說,我覺得有以下幾個問題需要極需改善:

  • 社區太小,這可能是目前最大的問題,在國內更是如此。如果你在百度上面搜”Elm“,出來的結果基本都不是Elm語言相關的。當然這也不賴Elm,因為你在百度上搜其它東西,基本出來的結果也不是你想要的。
  • 函數式編程與OO或過程式編程差別太大,上手真不是很容易,這會在很大的程度上影響到它的采用率。
  • Elm語言和編譯器本身也有一些東西有等完善,如目前還不支持String interpolation,elm reactor(類似于webpack-dev-server)不支持hot reload,其實之前是支持的,后來發現了bug,就去掉了。Time travel debugger也是,本來是有的,后來發現有bug又去掉了。當前這些都不是很嚴重的問題,比如hot reload只是節省了你手動刷新頁面的功力而已。然而從這些”原來有,后來發現有bug又去掉“這些事情中就能說明這個東西還不是很穩定的問題。
  • 接下來打算在公司的內部小工具上面試用一下,因為Elm文件是可以跟JS交互的,所以應該不是太大的問題,大不了再用回JS嘛。但是函數式編程作為未來的發展趨勢,還是要了解一下的。所以,總體來說,我覺得這是一門非常值得學習的語言。

    如果你對Elm感興趣,歡迎加微信群,共同交流。

    (為避免二維碼失效,請關注公眾號從里面加入)

    總結

    以上是生活随笔為你收集整理的Elm 语言初体验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。