Skip to content

lyinxyz/basemvc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

basemvc

Base MVC

Web应用是资源密集型的,最好只使用必要的代码而丢掉其他多余部分

简介:

使用过 JavaScript框架(如 AngularJS, Backbone 或者Ember )的人都很熟悉在UI(用户界面,前端)中mvc的工作机理。这些框架实现了MVC,使得在一个单页面中实现根据需要变化视图时更加轻松,而模型-视图-控制器(mvc)的核心概念就是:处理传入请求的控制器、显示信息的视图、表示业务规则和数据访问的模型

概念:

  应用中的代码利用urls中的“#”实现MVC模式的导航。应用以一个缺省的url开始,基于哈希值的代码加载应用视图并且将对象-模型应用于视图模板。

  url格式像下面这样:

  http://Domain Name/index.html#/Route Name

  视图内容必须以{{Property-Name}}的方式绑定对象模型的值和属性。代码会查找这个专门的模板格式并且代替对象模型中的属性值。

  以ajax的方式异步加载的视图会被放置于页面的占位符中。视图占位符可以是任何的元素(理想的情况是div),但是它必须有一个专门的属性,代码根据这个专门的属性来定位它,这样同样有助于代码的实现。当url改变时,会重复这个场景,另外一个视图被加载。      方法AddRoute接收3个参数:控制器,路由和模板( contoller, route and template)。他们分别是:

  controller:控制器的作用就是访问特定的路线。

  route:路由的路线。这个就是url中#后面的部分。

  template:这是外部的html文件,它作为这个路由的视图被加载。现在我们的libs需要一个切入点来解析url,并且为相关联的html模板页面提供服务。为了完成这个,我们需要一个方法。

  Initialize方法做如下的事情:

  1)获取视图相关的元素的初始化。代码需要一个具有view属性的元素,这样可以被用来在HTML页面中查找:

  2)设置缺省的路由

  3)验证视图元素是否合理

  4)绑定窗口哈希变更事件,当url不同哈希值发生变更时视图可以被及时更新

  5)最后,启动mvc    startMvc:方法中创建了一个代理方法startMvcDelegate。当哈希值变化时,这个代理都会被调用.下面就是当哈希值变化时我们做的操作的先后顺序:      1)获取哈希值

  2)从哈希中获取路由值

  3)从路由map对象_routeMap中获取路由对象routeObj

  4)如果url中没有路由信息,需要获取缺省的路由对象

  5)最后,调用跟这个路由有关的控制器并且为这个视图元素的视图提供服务    使用XML HTTP请求异步加载合适的视图。为此,需要传递路由对象的值和视图元素给方法loadTemplate。

loadView:方法被用于调用控制器方法,以及准备模型对象。

replaceToken:方法被用于与HTML模板一起绑定模型。

Releases

No releases published

Packages

No packages published