`
kongshanxuelin
  • 浏览: 925327 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

利用JSPTagEx开发单页面Web程序(附源码)

 
阅读更多

何为SPA:Web开发单页面,利用pushState技术实现浏览器的前进和后退,看过了gmail等Web项目,是不是觉得很酷,那么我们通过JSPTagEx框架(点击了解)来实现一个简单的单页面应用。

 

为什么SPA:

  1. 用户体验更酷更炫,加载速度更快;
  2. 服务端接口更规范,全程基于Restful接口,这些接口可为移动,桌面应用使用,不光Web;
  3. SPA往往更容易移植到手机App应用;
  4. 前后端彻底完全分离,各司其职,前端代码往往借助MV*框架使得代码更规范;

什么时候不该使用SPA:

  1. 你的网页应用需要SEO;
  2. 你的团队前端人员配套有限;

实现目标:

  1. 全程Ajax,页面无刷新;
  2. 支持浏览器的前进后退;
  3. 支持模板远程载入;
  4. 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

  • src.rar (332.3 KB)
  • 下载次数: 24
1
2
分享到:
评论

相关推荐

    御泥坊单页面程序 源码

    【标题】:“御泥坊单页面程序 源码”是指提供的是...总之,这个“御泥坊单页面程序 源码”项目涉及了前端开发的多个方面,包括技术选型、架构设计、用户体验优化等,对于学习和了解单页面应用开发具有很高的参考价值。

    微信小程序web-view源码(内嵌网页分享功能).zip

    微信小程序是一种轻量级的应用开发平台,允许开发者在微信内部构建功能丰富的应用,而`web-view`组件是其中的关键组成部分,它使得小程序能够内嵌HTML网页,提供了与Web页面交互的可能性。本压缩包中的源码着重展示...

    Java Web程序设计任务教程源码(黑马程序员)

    总之,《Java Web程序设计任务教程》通过丰富的实例和完整的项目源码,为读者提供了全面的Java Web开发学习路径。无论是初学者还是有一定基础的开发者,都能从中获益,深入理解并掌握Java Web应用的设计和开发。

    微信小程序云开发完整源码.rar

    微信小程序云开发是一种由微信团队推出的开发模式,它允许开发者在微信的小程序环境中利用云端的能力进行数据存储、处理和计算,极大地简化了后端服务的搭建过程,降低了开发成本。这款"微信小程序云开发完整源码"是...

    Web设计购物网站程序源码下载

    Web设计购物网站程序源码是开发在线电子商务平台的基础,它涉及到多个技术和概念。在这个项目中,我们使用Eclipse作为集成开发环境(IDE)来编写和管理源代码。Eclipse是一款强大的开源工具,广泛用于Java应用的开发...

    微信购物商城的微信小程序页面源码

    微信购物商城的微信小程序页面源码是使用微信WEB开发者工具开发,亲测可直接运行。该程序包含了详细完整的框架架构结构,从设计上满足了相关应用服务的设计要求,是一款非常值得学习简介的DEMO小程序源码。

    路由器web服务器网页源码.zip

    这个压缩包“路由器web服务器网页源码.zip”包含了一系列用于构建和控制路由器界面的文件,如设置页面、帮助页面以及JavaScript(js)、CSS(层叠样式表)和HTML(超文本标记语言)文件。这些文件共同构成了用户通过...

    旅游景点的微信小程序页面源码

    旅游景点的微信小程序页面源码是使用微信WEB开发者工具开发,亲测可直接运行。该程序包含了详细完整的框架架构结构,从设计上满足了相关应用服务的设计要求,是一款非常值得学习简介的DEMO小程序源码。

    微信小程序源码下载 微信小程序源码下载 2000套微信小程序源码

    3. **页面路由与生命周期**:小程序的页面有其特定的生命周期,源码中会体现如何在不同的生命周期函数中处理逻辑,以及如何通过路由进行页面间的跳转。 4. **样式设计**:WXSS类似于CSS,但有一些微信特有的规则。...

    Django Web开发指南源码

    《Django Web开发指南》是一本深入介绍使用Python框架Django进行Web开发的教程。Django,作为Python的顶级Web框架,以其高效、安全和可扩展性受到开发者们的喜爱。这个压缩包包含了该书的源码,使得学习者能够更好地...

    c#+web应用程序入门经典源码

    《C#+Web应用程序入门经典源码》是一本面向初学者的教程,旨在通过实例项目来讲解C#语言和ASP.NET框架在开发Web应用程序时的核心概念和技术。这本书的原书源码提供了丰富的实践材料,帮助读者深入理解理论知识,并将...

    微信小程序点餐系统源码

    微信小程序点餐系统源码是基于Java后台开发和微信小程序前端实现的一种在线餐饮订餐解决方案。这个系统允许用户通过微信小程序直接浏览餐厅菜单,选择菜品,完成下单,并进行支付,为顾客提供了便捷的用餐体验。下面...

    24套企业小程序模板源码

    企业小程序模板源码是开发企业级小程序的重要资源,它们提供了预设计的界面和功能结构,帮助企业快速构建符合自身需求的小程序应用。这24套模板涵盖了多种行业和应用场景,可以帮助企业在短时间内实现线上业务的拓展...

    微信小程序源码仿驾考宝典题库小程序

    微信小程序源码仿驾考宝典题库程序是一个以微信web开发者工具进行开发的微信小程序demo源码。 微信小程序源码仿驾考宝典题库程序功能特色 判断题型和单选题型 做题进度和对错显示 微信小程序源码仿驾考宝典题库...

    喝酒神器摇骰子微信小程序源码

    “喝酒神器摇骰子”微信小程序源码项目展示了如何利用微信小程序开发平台,结合JavaScript和微信特有的WXML、WXSS技术,构建一款简单却趣味的社交游戏。通过理解和学习该项目,开发者不仅可以掌握小程序的基本开发...

    PHP和MySQL Web应用开发核心技术 源码

    本书是为程序员提供的综合且实用的指南,教他们使用PHP和MySQL开发具有产品品质的、使用数据库的Web应用程序。本书不仅包括编写代码,而且介绍前端应用程序、用户界面和数据库设计,还有安全性、测试以及更多内容。 ...

    web登录注册页面模板150款(效果图+源码)

    在IT行业中,前端开发是构建Web应用程序的重要组成部分,而登录注册页面则是用户与网站交互的初始界面。"web登录注册页面模板150款(效果图+源码)"这个资源为前端开发者提供了一大批预设计的界面元素,帮助他们快速...

    年会抽奖web静态页面程序

    【年会抽奖Web静态页面程序】是一款专为年会活动设计的在线抽奖应用程序,它以Web页面的形式呈现,便于在各种设备上运行。这个程序基于Web技术构建,无需服务器端处理,所有逻辑都在用户浏览器中执行,即为静态页面...

Global site tag (gtag.js) - Google Analytics