何为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