

新闻资讯
行业动态meteor 1.3+ 版本中,session 包已不再默认内置,需手动添加;若控制台报错 “session is not defined”,只需执行 `meteor add session` 即可启用。
在 Meteor 应用开发中,Session 是一个轻量级、全局可用的响应式数据存储对象,常用于管理 UI 状态(如当前选中项、搜索关键词、模态框开关等)。它基于 ReactiveDict 实现,天然支持响应式更新——即在模板中调用 Session.get('key') 时,一旦该 key 被 Session.set() 修改,相关模板区域将自动重渲染。
⚠️ 注意:自 Meteor 1.3 起,session 包不再默认包含在新项目中。这意味着即使你使用 meteor create 初始化项目,Session 对象也不会自动存在。直接在浏览器控制台输入 Session 或在代码中调用 Session.set('filter', 'active') 将抛出 ReferenceError: Session is not defined。
✅ 正确启用方式如下:
meteor add session
执行后,Session 将全局可用(无需 import/require),你可在任意客户端 JavaScript 文件或模板辅助函数中安全使用:
// 设置状态
Session.set('currentFilter', 'completed');
// 读取状态(响应式)
Template.todoList.helpers({
filteredTodos() {
const filter = Session.get('currentFilter');
return Todos.find({ status: filter });
}
});
// 监听变化(可选)
Tracker.autorun(() => {
console.log('Filter changed to:', Session.get('currentFilter'));
});? 补充说明:
o.Collection)或 localStorage 封装; 总结:Session 并未被废弃,也未被 ReactiveVar 取代——二者定位不同:Session 是全局、简易、约定式的状态容器;ReactiveVar 是局部、显式声明、面向对象的响应式变量。合理选择,方能发挥 Meteor 响应式数据流的最大效能。