我正在努力了解Meteor的Deps.Dependency工具。在文档中,它说:
依赖关系表示a的反应数据的原子单位 计算可能取决于。
要在上下文中查看此内容,go here。
我四处寻找“原子数据单元”的定义,但我找不到它的定义。有谁知道它究竟意味着什么? “数据单元”是有意义的 - 我想我正在试图理解要包含的“原子”这个词的假设特征。
答案 0 :(得分:2)
Atomic(曾几何时)意味着“不能分成小块”。从那以后,我们学会了分裂原子,所以与化学的类比并不真正成立。
尽管如此,数据的原子单位是不能(合理地)分解成更小部分的数据。什么构成“较小的部分”当然是非常主观的。是一个整数原子?如果我将其分解为用于在内存中表示的字节,该怎么办?我如何将这些字节进一步分解为位?你可以看到这很快就会变得乏味。
出于您的目的,我认为存储在数据库表中的单元格中的任何值都是原子的。
答案 1 :(得分:2)
我绝不是Meteor的专家从未真正使用它。我对当前框架的兴趣只是过去,并且想知道它们是什么。
Meteor围绕一种MVC模式构建。只要模型中的数据发生更改,所有通用视图都会更新。通过概括,我的意思是视图不必是UI元素。
这是由Deps.Dependency
对象实现的。在您的链接示例中,weather
对象是"守卫"由weatherDep
依赖。
当天气变化时,会触发相关性,并且会重新计算/渲染依赖天气信息的所有视图。
在这种情况下,天气被视为数据的原子单位。
现在在示例中,天气是单个字符串,但即使天气包含多条信息,同样的原则也适用;说降水和温度。
那么什么是数据的原子单位?
无论数据模型的创建者认为是什么。
对于上面的示例,假设您的页面上有天气小部件。此小部件使用天气数据并创建一个图像,其中包含天气(云,雨,太阳等)的图形表示以及一个角落的温度。对于此小部件,天气是数据的原子单位,如果构成天气变化的任何信息,则需要重新绘制整个小部件。
第二小部件可以例如仅显示温度。你可以让这个小部件依赖于天气数据,但这意味着即使只有降水变化也会重新计算它,所以你可能决定有两个依赖关系;一个用于整个天气物体,一个用于温度。在一种情况下,天气是数据的原子单位,而在另一种情况下,天气是温度。
在这种情况下,您需要两组函数,因此温度小部件会在正确的依赖项上调用depends()
。
修订后的代码:
var weather = {precipitation:0.5, temperature:20}; var weatherDep = new Deps.Dependency; var temperatureDep = new Deps.Dependency; var getWeather = function () { weatherDep.depend() return weather; }; var getTemperature = function () { temperatureDep.depend() return weather; }; var setWeather = function (w) { weather = w; // (could add logic here to only call changed() // if the new value is different from the old) weatherDep.changed(); temperatureDep.changed(); }; var setTemperature = function (t) { weather.temperature = t; // (could add logic here to only call changed() // if the new value is different from the old) temperatureDep.changed(); };
链接中的文档说明了,我希望我的解释更清楚。