我目前正在开发我的第一个 Meteor 项目,随着代码基础的增长,我不确定是否正确使用会话变量/反应式编程方法。例如,让我们看一下用于编辑博客文章的表单。在编辑之前,我用Session.set("current_article", Articles.findOne(id))
设置当前文章。打开文章表单时,使用<input type="text" name="title" value="{{article.title}}">
.
但是表单比仅仅显示标题要复杂得多:
例如,当标题或标签更改时,右侧的文本(生成的推文消息)会在键入时更新。为此,我注册了一个keyUp
设置Session.set("current_article", $.extend(Session.get("current_article"), {tweet: someMagicTweetGeneration()}))
. 您可能已经注意到我使用 Session 变量的方式会导致重新渲染整个模板。
所以我的问题是:将更复杂的对象(如文章)存储到会话变量中是否有意义?这种保存表单的方式非常简单,但显然会导致其他问题。我应该Session.get("current_article")
分成Session.get("current_article.title")
, Session.get("current_article.tweet")
, ... 吗?还有其他最佳实践吗?