如何評價 Riot.js?
初略閱讀了一下 Riot.js 的代碼很短很短,還不到100行。
moot/riotjs · GitHub
Riot is a manifesto for vanilla JavaScript and jQuery.
小庫作為零依賴的獨立模塊的一個組件是非常不錯。這樣模塊庫封裝起來打包成一個文件後,模塊的大小還是會很小的,但是裡面卻用到了mvc的架構,而且還能非常獨立(零依賴的獨立),可以用在任何框架下面。(當然前提是模塊的設計要好)
你可能會寫backbone的插件,但絕對不會用backbone寫零依賴的獨立模塊。
你可以寫自己的零依賴的獨立模塊中使用riot.js,而且最後的文件不會太大。
另外還有一個很好的參考就是jQuery。jQuery里就封裝了一個sizzle.js的獨立組件。sizzle.js可以單獨使用。而jQuery封裝sizzle.js後作為一個零依賴的獨立模塊出現的。這樣jQuery使用是不需要其的依賴的。而一般人只會寫jQuery的插件,不會去封裝jQuery做成零依賴的獨立模塊。
所以我個人認為riot.js是作為編寫零依賴的獨立模塊而存在的,不會作為大型項目的基礎mvc框架而存在的。
功能不一樣比大小根本沒有意義……
在生產環境使用的我最有發言權了,就如同她宣傳語所說的那樣---React-like user interface,敢拿react作為標杆的庫還真的不多,尤其是在當前virtual dom大行其道的年代,大家紛紛讚揚並效仿這種html diff處理方式,以及js html 的混寫,當然代價非常大,代碼可讀性異常的差,尤其是面對一些大型組件的時候,各種html中插入邏輯代碼看了簡直有想跳樓的衝動,於是只好嘗試其他類似react庫,於是乎就找到了她。
首先說下她的優點,樓上的也都說過了,小而美,且語法簡約而優雅,極低的學習成本。在對數據的綁定dom處理上,可以釋放很高的生產力,相比較於react來說,代碼可讀性勝在一個維度了,且和其他庫兼容性比較好,如jquery,backbone,angular,使用得當的話,完全可以拿她當view使用。源代碼不到兩千行,可以很簡單的學習到她的精髓,甚至魔改,比如添加雙向綁定處理,以及組件的繼承和延遲載入等。缺點當然也都不容小視,對於非同步的處理必須要手動的update,無法做到真正的實時綁定(當然如果做到了,性能損耗是不可避免的,參考angular),也有一些比較小的bug,這些都可以通過修改源代碼來解決。
就是個超級簡化版的 Backbone 唄,原理上都一樣,但是只保留了最核心的事件機制
做簡單的事情還好,複雜的自己還是要寫好多
我就喜歡這些小而美的東西。。
Web對於資源載入,特別是第三方都是希望越小越好,但這不是去比較一個框架和一個類庫的唯一標準,只能說解決問題不一樣,側重點不一樣,摒棄一些實現,從而達到體積。
好比jqury和zepto一樣,jq大而全,解決了很多低版本,不同瀏覽器廠商在api實現上的差異,zepto更加關注移動端。
作者對riot的描述也是「a React ui like use」 畢竟沒有深入去了解過react不做過多評價!
我個人也比較喜歡小而美的東西
不明白為什麼起Riot這個名字,莫非是個縮寫詞?riot
- n. 暴亂;放縱;蔓延
- vi. 騷亂;放蕩
- vt. 浪費,揮霍
做的事情少當然代碼少。如果要實現 angularjs 里最基本的text input 和 model 的 2-way binding,用 Riot的代碼量就比 angular 多多了,你要自己去在事件響應里操作 DOM
小庫為體積小,因此其對各瀏覽器的原生API沒須太多的封裝,囿此兼容性非常差,只能運行在主流的那三四個瀏覽器的非常新的版本上。
隨著吹得越響,小白涌過來一用。要求與功能就越來越多,體積就難免越來越大。小庫對作者的構架能力比較少,庫一大,要求就越來越高。
從現在riotjs的ISSUE處理能力與版本號來看,作者已經失控了。 riotjs從0.92到1.0共用了8個版本,這期間經歷了出名到不出名的階段,1.0到1.0.4隻有五個小版本,這是用戶量大了,原來的架構與設計扣襟見肘的見證。然後是2.0到2.0.11一共12個版本。
riotjs的大多數使用者還是停留在JQ階段的菜鳥,對現在MVVM框架稱霸的格局一點影響也沒有。
小只是它唯一的賣點,巨人不會理會蠕蟲的挪動小!
這個提問很早就看到了,這兩年的前後端分離項目基本用的都是riotjs(包括一個單頁面的後台管理項目)但感覺還沒有足夠的資格去評價它,現在它已經到了3.1,也在介紹里去掉了react like跟virtual dom的字眼,作者也算是重新審視了這個框架。
選擇riotjs的理由就好比你去web開發可以用php可以用python可以用ruby可以用xxx一樣,每個人對工具的順手度不同,國內可能大多數團隊會選擇vue,一方面文檔的詳細以及組件的完善,代碼規範的制約等。而riotjs給人的感覺就是可以快速可以幹活,它的route很簡陋,它的compiler很方便,它的observable很實用,我甚至基於它寫了模擬Promise的庫 https://git.oschina.net/linyupark/hardcore2/blob/master/modules/promise.js
riotjs是個不錯的工具,在選擇工具的時候,合適順手就足夠了。很不錯的一個庫,簡單,快捷,容易定製,樓上所謂巨人不會理會蠕蟲之類的話語,非常搞野,哈哈
facebook,tencent,那個不是蠕蟲變成巨人,所以,技術是最容易出個人英雄的地方,TJ 直接創建了express,個人搞不定還有社區補, 我認為riot 2.0, 語法非常清晰,這點比react強
各有優勢,介於riot如此之小,完全可以當工具和react一起用在項目中;
看個例子
https://juriansluiman.nl/article/154/the-react-tutorial-for-riot
看這個問題的話, 應該是說以前的riot.js吧。 我只用過0.9.9 版本的,當時是作為前端mv* 框架在用, 整個riotjs 的代碼也就111行。
說說體驗, 小而美。 做了很簡單的事情,代碼很容易懂,也很好去修改這個框架。
但是,正是這些原因,我需要寫大量的代碼來實現我需要的功能。如果有時間和精力折騰也是可以的。
不過現在riotjs 已經不再是一個mv*的框架了, 而是react-like UI view 還沒折騰過~ 如果有時間折騰的話, 再來補充
推薦閱讀:
TAG:前端開發 | JavaScript | Node.js |