如何看待reactive web框架Binding.scala ?


這個問題不用再邀請我了。

你們可以去邀請這框架的作者的同事:「宇宙級React開發」 @Wang Namelos去回答。


謝邀!

從我的角度來看,這東西只能是少數人的玩具吧,要想流行開來,極難!

這東西的目標人群應該是從Java轉到Scala的後端程序員,並且剛好又想做點前端的事情,感覺這個圈子太小了!

前端工程師基本不會投向Scala的懷抱。Scala本身後期的學習曲線就很陡峭,再加上JS也在進化,各種新特性慢慢能讓前端開發變得高效優雅,所以前端工程師不會有動力轉向Scala。

另外,這種東西要進入生產,還需要考慮很多問題,包括:

1、開發過程是否友好,是否方便debug。

2、轉換出來的JS代碼會不會臃腫。

沒仔細看過這個庫,只是憑自己兩年前玩過半年Scala的經歷來猜測的,有空再去瞻仰一下啦!


我們為什麼需要React? - 楊博的回答

補充一下Scala.js:Scala.js no longer experimental


世界各國人民這樣看待Binding.scala:

ólafur Páll Geirsson:

Hi,我只想對 @楊博 你說聲謝謝,Binding.scala 真棒!我花了一會兒功夫讓腦子繞清楚`.bind`的用法和時機。但一旦搞清楚了,前端(包括路由和其他很酷的功能)開發過程就變得非常直截了當。

TodoMVC對新手上手來說是個極好的例子。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=57bc5dd087f779f0691f0b2a

Justin Maat:

Binding.scala感覺非常簡單,不像其他庫那麼複雜

https://gitter.im/ThoughtWorksInc/Binding.scala?at=5720f1cb9b4160fa760a6470

dafcok:

感覺Binding.scala精簡至極。

https://www.reddit.com/r/scala/comments/4dvsbn/announcing_bindingscala_a_reactive_web_framework/d1vui5n

Milad Khajavi:

感謝你,我發現Binding.scala和我見過的其他框架相比,Binding.scala非常簡單。偉大的作品。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=581bf9952d4796175f4015ba

Binding.scala之簡潔,遠超其他數據綁定框架,還支持XML字面量。

Philip Stutz:

嘿楊兄,Binding.scala真的很酷,是迄今為止web應用的客戶端開發最最方便的方式。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=57bacaddbb6fad403cf53794

Markus Herrmann:

真的很酷!Binding.scala——Scala數據綁定框架

Rahel Lüthy:

Binding.scala——ThoughtWorks的reactive web框架,感覺極其簡潔

Adam Hibble:

@thoughtworks Binding.scala簡單極了。

https://twitter.com/Algomancer/status/783445081927720960

我真的很喜歡用Binding.scala做些小巧、可重用、可隔離的組件。

https://www.reddit.com/r/scala/comments/55whc1/a_really_simple_full_stack_scala_starter_with/d8g58bh

Walfie:

在我使用Binding.scala至今,絕大多數時間 Binding.scala 都給了我絲般柔順的體驗。多虧有了Binding.scala

jfilali:

@Atry Binding.scala 看起來真偉大。恭喜。你的所作所為是真正的創新。以前,我評估了各種庫的品質時、搭建了開發環境,包括scala-react、material-ui的包裝庫、material-ui的JavaScript依賴、diode、JavaScript打包、JavaScript依賴。現在,我懷疑所有這些工作還有什麼價值。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=584d355628d755bf14ef4a3a

(……關於Binding.scala支持定製XML組件)讓我能樂上一整天。實際上我已經把Binding.scala和flux/Model用在一起了。儘管底層是可變模型,一樣能運轉得很好。我遵守以下編碼風格:利用容器連接存儲和視覺組件,組件接受的參數都是Binding[Node]對象。我發現這種方式可伸縮性非常好。

目前我需要寫幾篇博客,但至今我體驗到Binding.scala真的非常好。我的生產力大大提高。我以前寫了個ReactJS項目花了兩個月,react-scala-js項目花了一個月,而Binding.scala項目只用兩周。

不久以後我會寫一篇博客談談我的經驗。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=5879bd26074f7be763cc550f

Pedro Larroy:

Binding.scala是Scala的reactive web應用庫,比ReactJS易用。

chris-tek:

我以前學過ELM、Scala.js+diode,最近開始調研Scala.js+Binding.scala,構建純粹完全響應式的GUI。

現在我已經有些階段性成果,成功讓GUI和後端(RabbitMQ + stomp,websocket協議)交換數據。不可思議,程序運行得非同尋常的棒。

Binding.scala那坨代碼寫得真好。

https://gitter.im/ThoughtWorksInc/Binding.scala?at=57c69070ca24c06c638a5ff5

Anthony Homan:

Binding.scala絕對是最卓越的!我承認我才剛剛開始接觸Binding.scala,但即便如此,Binding.scala真真是我尋覓已久的那塊拼板,讓Scala.js真正值得投資。

我會繼續試著把我現有的AngularJS(前端)/Scala(後端)應用,移植到全棧Scala上,用Scala.js和Binding.scala代替AngularJS。

https://groups.google.com/d/msg/scala-js/xJsjE-zFeuk/gqIgTXi2AwAJ

Simone Scarduzio:

今天漲點知識:Binding.scala,用Scala代替ReactJS的明智選擇

https://twitter.com/s_scarduzio/status/763501825484087300


其實我看了不少binding.scala和現在主流的前端框架的帖子。

總的來說的是後端語言編程成js是為了解決js沒有或者沒有更好的選擇。個人認為編譯型語言編程成解析型語言很大一點是為了在編寫代碼時就能發現類型錯誤。

但要評論binding很大程度是要取決於前置條件的。

Scala是JVM上的編程語言,一切JVM上的庫都能使用,一切在JVM上跑的程序都能用Scala寫。(理論上是的,如果不能,那就是有一堆的黑魔法implicit沒寫)

Scala.js是Scala編譯成js的框架(應該算是框架吧),理論上Scala的特性都能使用。

binding.js是Scala.js的框架,可以類比成Vue.js是js的框架一樣。

這麼下來,其實這是Scala的一個全套裝中的一件,所以是要取決於Scala的。從流行度上來說,國內的Scalaer越來越多,需求也越來越大,是個流行趨勢,但是與js的20多年來比還是需要點時間發展。

評論這種東西,是要有比較才能有區別的,不然一個框架肯定比原生scalajs好用(就像學了springmvc再回頭細學servlet才發現springmvc做了這麼多東西),但是有一點,不能夠跟vue、react、angular比,因為沒有可比性(現在應該沒有人拿python跟C語言比較吧。)相似的框架有widok。比較後會發現,binding的文檔不夠友好(基本要擼源碼),但是確實是比較好上手(文檔真的不行啊,看著demo學好痛苦啊),但是機構化上widok會比較好,有完整的一個應用的結構(類比vue),但是binding可能就需要自己去搭建多個頁面的多頁應用了。binding的好處是能夠在寫邏輯時鑲在「組件」里,使得邏輯會比較清晰(並不是html里script寫js那種鑲嵌,是邏輯鑲嵌),就跟vue一樣,只不過vue封裝成了標籤。

其實當Scala.js能夠全局調用生成js時(就是Scalajs也能調用js原生框架),binding肯定是能夠躋身前端框架。


私以為react,vue與binding.scala之爭其實是前後端腳本語言的特性之爭;

其實大家都是js/html開發的編譯解釋工具:

react/vue優勢是直接基於js框架編譯出來;

而scala強弱類型兼有,當你發現基於jvm的腳本語言竟然也可以像js一樣隨便定義子函數的時候.....,後端的其他傳統優勢就發揮出來了(天生的組件式,正交,設計模式...都可以用在裡面了)


推薦閱讀:

現在有沒有公司使用 Scala 進行 Android 開發,如果有那麼使用哪些工具呢?
到底該如何理解閉包?
scala相對於python有何優缺點?
為什麼這兩年函數式編程又火起來了呢?

TAG:Web開發 | 前端開發 | HTML5 | Scala | FunctionalReactiveProgramming |