模型
模型用来存放应用的所有数据对象。比如,可能有一个User 模型,用以存放用户列表、它们的属性及所有与模型有关的逻辑。
模型不必知晓视图和控制器的细节,模型只需包含数据及直接和这些数据相关的逻辑。任何事件处理代码、视图模板,以及那些和模型无关的逻辑都应当隔离在模型之外。将模型和视图的代码混在一起,是违反MVC 架构原则的。模型是最应该从你的应用中解耦出来的部分。
当控制器从服务器抓取数据或创建新的记录时,它就将数据包装成模型实例。也就是说,我们的数据是面向对象的(object oriented),任何定义在这个数据模型上的函数或逻辑都可以直接被调用。
因此,不要这样做:
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
- var user = users["foo"];
- destroyUser(user);
而要这样做:
- var user = User.find("foo");
- user.destroy();
第1 段代码没有命名空间的概念,并且不是面向对象的。如果在应用中定义了另一个destroyUser() 函数的话,两个函数就会产生冲突。我们应当确保全局变量和函数的个数尽可能少。在第2 段代码中,destroy() 函数是存放在命名空间User 的实例中的,User 中存放了所有的记录。当然这只是理想状况,因为我们控制了全局变量的个数,更好地避免了潜在的冲突,这种代码更加清晰,而且非常容易做继承,类似destroy() 的这种函数就不用在每个模型中都定义一遍了。
在第3 章中我们会更深入地讲解模型,其中包含从服务器下载数据及创建对象关系映射(ORM)。