RactiveJS 与 JSX 兼容吗?
我猜有些标记不兼容。我喜欢强类型的想法,并且能够在 JavaScript 源代码中干净地编写模板。也许这被认为是糟糕的设计?
不。React.js 和 Ractive.js 有很多相似之处(例如,两者都通过在内存中构建轻量级虚拟 DOM 来工作),但它们有一个非常重要的区别——React 完全拒绝模板的想法。
也就是说 JSX不是一种模板语言,它只是看起来像一个!在 React 中,如果你有这样的东西......
<h1>Hello world!</h1>
...它被 JSX 预处理器转换成这样的东西:
React.DOM.h1(null, 'Hello world!');
换句话说,JSX 描述的是函数,而不是模板。相比之下,在 Ractive 中,Mustache 模板被解析为可以作为 JSON 传输的树状结构。
现在,在该示例的情况下,原始字符串经过什么过程并不重要 - 它最终仍将作为某个<h1>
浏览器中的元素结束。但是当你开始引入任意 JavaScript 时,它会变得更加困难,这些 JavaScript 引用this.state
和this.props
- 可以改变 React 中组件的基本结构但在 Ractive 中没有意义的东西。
Ractive 未来可能会支持除 Mustache 之外的模板语言,但 JSX 不太可能成为其中之一,因为它们有如此不同的方法和设计目标。
然而,这里有一个相关的问题,即能够在单个文件中完全描述组件。那里正在进行一些工作- 最可能的情况是我们将能够在 .html 文件中描述组件(因为您可以在 HTML 中使用 JavaScript 和 CSS),而不是将模板写入您的 .js 文件。