Backbone.Router

Backbone.Router    

场景:程序要为应用的重要位置提供可链接,可收藏,可分享的URLs.hash片段可以用来提供这种链接,History API ,可以用来处理标准URLs  (/page)

Backbone.Router   为客户端路由提供了方法,并能连接到指定的动作或事件。对于不支持History API的旧浏览器,路由提供了优雅的回调函数并可以透明的进行URL片段的转换

页面加载期间,当应用于创建了所有的路由,需要调用   Backbone.history.start()   

Backbone.history.start({pubState:true})  来确保初始化URL的路由

var Workspace = Backbone.Router.extend({

  routes:{

    "help" :  "help",

    "search/:query": "search",

    "search/:query/p:page":"search"

  },

  help:function(){


  },

  search:function(query,page) {

    

  }

});  


当访问者点击浏览器后退按钮,或者输入URL,如果匹配一个路由,会触发一个基于动作

openPage:function(pageNumber) {

  this.document.pages.at(pageNumber).open();

  this.navigate("page/" + pageNumber);

navigate    router.navigate(fragment,[triggerRouter])

手动到达应用程序的某个位置,传入triggerRouter以执行路由动作函数

 


Backbone.history

History 作为全局路由服务用于处理hasChange 事件或pushState,匹配适合的路由,并触发回调函数     Backbone.history会自动创建

Backbone 会自动判断浏览器对pushState的支持,以供选择。不支持的浏览器将会继续使用基于猫点的URL片断,如果兼容pushState的浏览器访问了某个 URL猫点,将会透明的转换为真实的URL

start    Backbone.history.start()

当所有的路由创建并设置完毕,调用 Backbone.history.start()  开始监控haschange 事件并分配路由

让它支持pushState        Backbone.history.start({pushState:true});

给出基于的路径     Backbone.history.start({pushState: true, root: "/public/search/"})

如果服务器已渲染了整个页面,但又不希望开始History时触发初始路由,传入silent:true


Backbone.sync

Backbone每次向服务器读取或保存模型时都要调用执行的函数。

它使用   $.ajax   方法发送  RESTful json    可以重载该方法


Backbone.sync语法      sync(method,model,[option])

method  CRUD方法    create   read update  delete

model 要被保存的模型

option 成功或失败后的回调函数    以及所有jquery请求支持的类型


Backbone.sync 发送请求以保存模型时,其属性会被序列化为JSON ,头为application/json   

当接收来自服务器的JSON响应后,对经过服务器改变的模型进行拆解,然后在客户端更新,当read 请求从服务器端,响应一个集合时,便拆解模型属性对象 的数组 

 create POST  /collection

read .GET /collection[/id]

update  PUT /collection/id

delete   DELETE collection/id


emulateHTTP   Backbone.emulateHTTP = true

用于老浏览器不支持 PUT DELETE 请求时


Backbone.emulateJSON = true 

不支持application/json请求,





posted @ 2011-12-21 17:39  顺武  阅读(5967)  评论(0编辑  收藏  举报