何为SPA:Web开发单页面,利用pushState技术实现浏览器的前进和后退,看过了gmail等Web项目,是不是觉得很酷,那么我们通过JSPTagEx框架(点击了解)来实现一个简单的单页面应用。
?
为什么SPA:
什么时候不该使用SPA:
实现目标:
实现步骤:
@TagRest(value="teams/**")
public class Home extends AjaxServlet{
private static final long serialVersionUID = -8814286860867527336L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
redirect(request,response,"/spa/home.html");
}
}
?

?
function openMenu(page)
{
var index = 0;
if(page == "page1"){
index = 1;
}else if(page == "page2"){
index = 2;
}
$(".menu li").removeClass("cur");
$(".menu li").eq(index).addClass("cur");
}
$LAB
.script("/spa/js/jquery.min.js").wait()
.script("/spa/js/underscore-min.js").wait(function(){
})
.script("/spa/js/backbone-min.js").wait(function(){
$("#loading").hide();
$(document).ready(function() {
var PageView = Backbone.View.extend({
tagName: ‘div‘,
id: ‘app‘,
initialize:function(pageid){
this.pageid = pageid;
},
render: function() {
this.$el.html(_.templateFromUrl(‘/restful/teams/jsp?pagename=‘+this.pageid));
return this;
},
});
$(document).on(‘click‘, ‘a[href^="teams/"]‘, function(e) {
e.preventDefault();
var href = $(e.currentTarget).attr(‘href‘);
if(href == "teams/home"){
Backbone.history.navigate("", { trigger: true });
}else{
Backbone.history.navigate(href, { trigger: true });
}
});
var AppRouter = Backbone.Router.extend({
routes: {
‘‘: ‘root‘,
‘teams(/:pageid)‘: ‘goPage‘
},
initialize: function() {
},
root: function() {
openMenu("teams/home");
$("#container").html("Home Page");
},
goPage: function(pageid) {
openMenu(pageid)
$("#container").html(new PageView(pageid).render().$el.html());
}
});
new AppRouter();
Backbone.history.start({ pushState: true, root: ‘/‘ });
});
});
?

?
源码见附件src.rar
原文:http://cxlh.iteye.com/blog/2243602