2013-12-23 24 views
2

RactiveJS是否與JSX兼容?RactiveJS和JSX

我猜一些標記是不兼​​容的。我喜歡強大的打字思想,並能夠在JavaScript源代碼中清晰地編寫模板。也許這被認爲是不好的設計?

+1

您的意思是[JSX](http://jsx.github.io/),編譯爲JavaScript的語言或[JSX](http://facebook.github.io/react/docs/jsx- in-depth.html),React.js的預處理器?其中一個關注強類型,另一個關注在js源代碼中編寫UI組件標記。 –

+0

爲了澄清,JSX預處理了React.js,以便您可以使用js源代碼中的模板。 – Joel

+1

閱讀此博客文章... http://blog.ractivejs.org/posts/whats-the-difference-between-react-and-ractive/ –

回答

14

不。React.js和Ractive.js有許多相似之處(例如,兩者都是通過在內存中構造一個輕量級虛擬DOM來實現的),但它們有一個非常大的區別--React完全拒絕了模板的想法。

也就是說JSX 不是模板語言,它看起來就像一個!在反應過來,如果你有這樣的事情......

<h1>Hello world!</h1> 

...它就會被JSX預處理器轉換爲這樣的事情:

React.DOM.h1(null, 'Hello world!'); 

換句話說JSX描述的功能,而不是模板。相比之下,在Ractive中,Mustache模板被解析爲可以作爲JSON傳輸的樹狀結構。

現在,在這個例子的情況下,它其實並不重要原始字符串經過什麼樣的過程 - 它仍然要結束了在某處的瀏覽器<h1>元素。但是當你開始引入任意引用this.statethis.props的JavaScript時會變得更加困難 - 這些東西可以改變React中組件的基本結構,但在Ractive中沒有意義。

Ractive未來可能會支持除Moustache之外的模板語言,但JSX不太可能成爲其中的一種,因爲它們有不同的方法和設計目標。

但是,這裏有一個相關的問題,它能夠在單個文件中完整地描述組件。發生了一些ongoing work - 最可能的情況是,我們將能夠在.html文件中描述組件(因爲您可以在HTML內使用JavaScript和CSS)而不是將模板寫入您的.js文件。