我刚刚开始使用MeteorJS,并且来自ReactJS和AngularJS,我发现了一个让我觉得可重用组件的漏洞。流星模板似乎很适合重复使用和重复代码,但是特殊按钮,日期选择器之类的东西呢?我应该在流星之上使用这些框架吗?这与Blaze有什么关系?在这个问题上,火焰甚至做了什么呢?或者我是否仅限于在template.rendered函数中初始化的jquery插件(也称为bootstrap)?
由于
答案 0 :(得分:0)
Blaze强迫你使用jQuery来进行动态DOM操作。使用ReactJS,DOM可以通过它的状态和道具进行操作,更容易调试和编写。 ReactJS避免了jQuery汤,它更容易理解你的代码。
然而,我花了好几个小时试图让一个多文件ReactJS应用程序在Meteor中工作,但仍然没有运气。 react-meteor
包仅适用于单个JSX文件,并且在使用Meteor包含的Android构建工具为Android构建时会引发错误。我在https://github.com/reactjs/react-meteor/issues
我不明白为什么你不能使用Blaze partials构建单个按钮或日期选择器。即
{{> custom-button }}
。
关于这个问题,火焰甚至做了什么呢?
我的愚蠢回答,Blaze让你的客户端/浏览器不必每隔X秒轮询一次服务器,看看是否有应该出现在客户端/ DOM中的更改。
我对ReactJS的理解是你仍然需要轮询服务器,除非你将ReactJS与Meteor一起使用。因此,如果您在客户端上安装了带有ReactJS的Express服务器,则需要轮询更改,或使用Socket.io,对于非平凡的应用程序,请使用Flux。流星会简化胶水/插头......如果我只能使它工作!
答案 1 :(得分:0)
您可以使用Blaze Components包。 (我是作者之一。)它提供了Blaze之上的扩展,为您提供可重用和可扩展的组件。
我还想声称@ Giant-Elk的答案不正确。 Blaze不会强迫你使用jQuery来进行动态操作。我甚至声称这与React是一回事。关键是你应该创建自己关心的反应状态,然后在模板帮助器中使用它来决定显示什么并留给Blaze然后渲染和动态修改。所以我的想法是你有一个你定义和修改的反应状态,你声明应该如何呈现该状态,然后Blaze注意它会根据该状态呈现DOM并在状态发生变化时更新DOM,自动,被动地
它与轮询服务器没有任何关系。反应性取决于您的代码。它可以来自文档的服务器端发布端点,也可以来自客户端上的其他一些反应源。重点是状态(通常是Blaze中的数据上下文)发生了变化,Blaze会根据它更新DOM。是的,状态可以来自服务器,然后您必须关心如何从服务器更新和维护它。但这是Meteor的本质,而不是Blaze本身。