何为SPA:Web开发单页面,利用pushState技术实现浏览器的前进和后退,看过了gmail等Web项目,是不是觉得很酷,那么我们通过JSPTagEx框架(点击了解)来实现一个简单的单页面应用。
为什么SPA:
- 用户体验更酷更炫,加载速度更快;
- 服务端接口更规范,全程基于Restful接口,这些接口可为移动,桌面应用使用,不光Web;
- SPA往往更容易移植到手机App应用;
- 前后端彻底完全分离,各司其职,前端代码往往借助MV*框架使得代码更规范;
什么时候不该使用SPA:
- 你的网页应用需要SEO;
- 你的团队前端人员配套有限;
实现目标:
- 全程Ajax,页面无刷新;
- 支持浏览器的前进后退;
- 支持模板远程载入;
- Restful API演示;
实现步骤:
- 所有符合链接规范的转向同一页面:/teams打头的URL为SPA,由于是多页面,所以你必须借助一些代码或借助工具将所有的URL为/teams打头的都转向到home.html这个页面,这里用JSPTagEx的TagRest注解实现,即代码方式:
@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"); } }
- 单页面HTML:这里我们定义一下单页面HTML结果,如下图:
- 选取前端工具,使用pushState:我们这里选用了Backbone.js,所以定义一个路由,并启用PushState,以下是app.js的所有代码:
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
相关推荐
【标题】:“御泥坊单页面程序 源码”是指提供的是...总之,这个“御泥坊单页面程序 源码”项目涉及了前端开发的多个方面,包括技术选型、架构设计、用户体验优化等,对于学习和了解单页面应用开发具有很高的参考价值。
总之,《Java Web程序设计任务教程》通过丰富的实例和完整的项目源码,为读者提供了全面的Java Web开发学习路径。无论是初学者还是有一定基础的开发者,都能从中获益,深入理解并掌握Java Web应用的设计和开发。
【标题】"WEB程序报表C# 源码"揭示了这是一个关于Web应用程序开发的项目,专注于报表功能的实现,采用C#编程语言。在Web应用程序中,报表通常用于数据可视化,提供对数据库中信息的汇总、分析和展示。C#是微软开发的...
微信小程序云开发是一种由微信团队推出的开发模式,它允许开发者在微信的小程序环境中利用云端的能力进行数据存储、处理和计算,极大地简化了后端服务的搭建过程,降低了开发成本。这款"微信小程序云开发完整源码"是...
Web设计购物网站程序源码是开发在线电子商务平台的基础,它涉及到多个技术和概念。在这个项目中,我们使用Eclipse作为集成开发环境(IDE)来编写和管理源代码。Eclipse是一款强大的开源工具,广泛用于Java应用的开发...
这个压缩包“路由器web服务器网页源码.zip”包含了一系列用于构建和控制路由器界面的文件,如设置页面、帮助页面以及JavaScript(js)、CSS(层叠样式表)和HTML(超文本标记语言)文件。这些文件共同构成了用户通过...
微信购物商城的微信小程序页面源码是使用微信WEB开发者工具开发,亲测可直接运行。该程序包含了详细完整的框架架构结构,从设计上满足了相关应用服务的设计要求,是一款非常值得学习简介的DEMO小程序源码。
旅游景点的微信小程序页面源码是使用微信WEB开发者工具开发,亲测可直接运行。该程序包含了详细完整的框架架构结构,从设计上满足了相关应用服务的设计要求,是一款非常值得学习简介的DEMO小程序源码。
《C#+Web应用程序入门经典源码》是一本面向初学者的教程,旨在通过实例项目来讲解C#语言和ASP.NET框架在开发Web应用程序时的核心概念和技术。这本书的原书源码提供了丰富的实践材料,帮助读者深入理解理论知识,并将...
本学习实录源码着重介绍了如何利用ASP.NET进行Web开发,通过实际的代码示例帮助开发者深入理解和掌握相关技术。 1. **ASP.NET架构** ASP.NET包含了多种开发模式,如Web Forms、MVC(Model-View-Controller)、Web ...
这个"微信小程序-点餐外卖小程序完整源码.zip"是一个完整的开发案例,适用于那些想要学习微信小程序开发或者需要搭建类似点餐外卖系统的人。 点餐外卖小程序的核心功能包括: 1. 用户界面:提供美观易用的用户界面...
最新登录页面小程序模板源码分享 登录注册微信小程序前端模板页面 适用范围广,其他H5站也能使用 开发软件:微信WEB开发者工具 最新登录页面小程序模板源码分享 登录注册微信小程序前端模板页面 适用范围广,...
微信小程序源码仿驾考宝典题库程序是一个以微信web开发者工具进行开发的微信小程序demo源码。 微信小程序源码仿驾考宝典题库程序功能特色 判断题型和单选题型 做题进度和对错显示 微信小程序源码仿驾考宝典题库...
一个完整的工程项目WEB管理系统,项目源码采用三层构架,开发工具用VS2013以上版本,数据库建议用SQLServer2008R2及以上版本,项目里面的功能需求及流程有点复杂,虽然项目开发时间有点早,但整体设计思路及功能实现...
本书是为程序员提供的综合且实用的指南,教他们使用PHP和MySQL开发具有产品品质的、使用数据库的Web应用程序。本书不仅包括编写代码,而且介绍前端应用程序、用户界面和数据库设计,还有安全性、测试以及更多内容。 ...
在IT行业中,前端开发是构建Web应用程序的重要组成部分,而登录注册页面则是用户与网站交互的初始界面。"web登录注册页面模板150款(效果图+源码)"这个资源为前端开发者提供了一大批预设计的界面元素,帮助他们快速...
【年会抽奖Web静态页面程序】是一款专为年会活动设计的在线抽奖应用程序,它以Web页面的形式呈现,便于在各种设备上运行。这个程序基于Web技术构建,无需服务器端处理,所有逻辑都在用户浏览器中执行,即为静态页面...
微信小程序是一种轻量级的应用开发平台,主要用于在微信内运行,提供给用户便捷的交互体验。本项目是关于创建一个婚礼邀请函的小程序,通过五个关键页面为用户提供完整的信息展示和互动功能。以下是对这些页面及其...
【Java Web轻量级开发全体验】是一本深入探讨如何在Java平台上进行高效、轻便的Web应用程序开发的书籍。该资源提供了邓子云作者的源码,供读者实践和学习。通过研究这些源码,我们可以深入了解Java Web开发中的关键...
个人简历微信小程序源码