用 Meteor 构建可重用组件?

Building reusable components with Meteor?

我刚开始使用 MeteorJS,来自 ReactJS 和 AngularJS,我发现了一个我认为应该是可重用组件的漏洞。 Meteor 模板似乎非常适合重用和重复大量代码,但是特殊按钮、日期选择器等东西呢?我应该在流星之上使用这些框架吗?这与 Blaze 有什么关系?在这个问题上,blaze 究竟做了什么?还是我仅限于在 template.rendered 函数中初始化的 jquery 插件(又名 bootstrap)?

谢谢

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 }}.

On that subject, what does blaze even do exactly?

我的愚蠢回答,Blaze 让您的 client/browser 不必每 X 秒轮询一次服务器以查看 client/DOM 中是否应该出现更改。

我对 ReactJS 的理解是你仍然需要轮询服务器,当然除非你将 ReactJS 与 Meteor 一起使用。因此,如果您在客户端上有一个带有 ReactJS 的 Express 服务器,您需要轮询更改或使用 Socket.io,对于非平凡的应用程序,请使用 Flux。 Meteor 会简化 glue/plubming... 如果我能让它工作的话!

您可以使用 Blaze Components 包。 (我是作者之一。)它在 Blaze 之上提供了一个扩展,为您提供可重用和可扩展的组件。

我还想声明@Giant-Elk 的回答是错误的。 Blaze 不会强制您使用 jQuery 进行动态操作。我什至会声称这与 React 是一样的。关键是你应该创建你自己关心的反应状态,然后你在模板助手中使用它来决定显示什么,然后留给 Blaze 来渲染和动态修改东西。所以这个想法是你有一个你定义和修改的反应状态,你声明应该如何呈现该状态,然后 Blaze 负责根据该状态呈现 DOM 并更新 DOM 当状态改变时,自动地,反应性地。

它与轮询服务器无关。反应性来自何处取决于您的代码。它可以来自服务器端文档的发布端点,也可以来自客户端上的其他一些反应源。要点是状态(通常是 Blaze 中的数据上下文)发生变化,Blaze 会基于此更新 DOM。是的,状态可以来自服务器,然后你必须关心它是如何从服务器更新和维护的。但这是 Meteor 的本质,而不是 Blaze 本身。