【技术干货】前端开发之jQuery单页面开发

本文作者:上海驻云Web前端工程师 著名2.5次元患者 黄志彪 (头像与真人一模一样)

一、前言

  单页面开发在如今的WEB开发中占有绝对的优势,单页面应用可以提高用户体验度,可以实现跨平台应用开发。要实现单页面开发也有很多前端框架,比如:AngularJS,BackboneJS等等,这些都是很流行很全面的前端开发框架,它提供了网页模板,路径解析,API访问及Dom操作功能,但是有时候我们的需求比较简单,如果用这些大型前端框架那就显得有点重了。这里我介绍下自己使用Jquery实现单页面应用开发的过程。

二、URL HASH理解


  Html中的锚点定位相信大家都用过,在URL中,“#” 与其后面的字符串共同组成了锚点部分,“#” 代表网页中的一个位置,其右面的字符,就是该位置的标识符。单单改变 “#” 后的部分,浏览器只会滚动到相应位置而不会重新加载网页,在JavaScript中我们通过location.hash来获取。在URL中,除了以 “#” 号开头锚点部分,还有一段以“?”号开头的部分,“?”及后面的字符串代表的是传递的参数,在 “http” 请求中,“#” 及标识符是不会传递到服务器的,而“?”后面的参数部分则会发送到服务器。

  接下来我们用几个URL来理解下:

1、http://www.xxx.com/a/b#a

2、http://www.xxx.com/a/b#a?name=XX&age=21

在这两个URL中,“#a” 就是hash,我们称之为path部分,“?name=XX&age=21”我们称之为search部分。接下来我们再看个URL:

3、http://www.xxx.com/a/b#!a

这个URL跟上面的第一个URL有一个区别,多了一个 “!” 相信大家在单页面应用开发的时候都看到过 “#!” 的组合,为什么要如此组合?大家可以看下谷歌的一篇文章Making AJAXapplications crawlable大概的意思就是说让path部分可以被搜索引擎搜索到,而search部分是不能被搜索的,这点很重要,如果你做的页面不能被搜索引擎搜索到那就没意义了。

三、案例


  现如今很多流行的前端框架都是单页面应用,但是有时候我们的需求比较简单,又不想用那些大型的前端框架,怎么办?比如:一个公司有公司的官网,公司官网一般是静态页面,然后里面有个注册功能,但是注册呢是分几个步骤的,又不想在一个页面显示完成,现在的网页一般都需要设计的简洁,不然太繁琐了人家一看都懒得填了,注册到下一个步骤需要记录上一个步骤的数据,而且用户回退的时候还会自动记住用户上一个步骤填入或选择的数据,这个时候大家肯定会想着在一个页面上用简单的显示和隐藏元素来实现,实际上大多数都是这样做的,但是有一个缺点,用户点击浏览器的前进和后退怎么办?这样做的情况下用户点击前进和后退就退出了注册页面了,如何避免这种情况呢?下面介绍的单页面开发就可以解决这个问题。那在这里如何开发我们的单页面应用?显然用AngularJS这种大型的前端框架并不合适,这个时候别忘记了我们的老朋友-jQuery。

四、单页面开发


  在进入开发步骤之前,我们先了解下一个jQuery的框架-jquery-hashchange。这个框架就是用来做路由控制的,它可以监听hash的变化。

  假如我们的需求有两个步骤,我们写一个路由控制的类,这个类我们学习下AngularJS的route模块定义方式,将模板和控制器定义在一起:

  这段代码是路由模块,我们先定义了一个根路由:_rootPath = '#!regist';,而后我们定义了一个跟路由匹配正则_pathRegu= /\#\!regist\/\w+/g;,这个正则在后面做路由匹配有用。接下来我们看路由定义_pathRoute对象,该对象定义了一个默认路由default和一个路由定义的数组path,在path里面每个路由都定义了路由地址,模板id和控制器,这里的模板使用的是jquery-tmpl插件,接下来我们看看控制器类:

然后我们要看看模板定义:

好,到这里我们就看到了控制器类定义和页面模板定义,下面我们再看看如何将控制器和模板进行解析:

这个类是总控制器,它负责路由转发和模板加载,最后我们还要使用jquery-hashchange插件监听路由变化来转发路由和加载模板:

这样,我们用jQuery实现单页面应用开发的基本模块就搭建完成了,在前端开发中,我们常要跟服务器通信,这个时候我们可以专门写一个类做接口调用,如:

然后在控制器中引入该模块,调用相应的接口函数就好了。

好啦~本文到这里就结束了,同时,如果喜欢我们的话就赶紧订阅我们吧~~~每天定时推送新鲜干货~~~也可以关注我们的微信公众号:架构云专家频道 每天同步更新哟~~~

时间: 2024-08-03 17:22:29

【技术干货】前端开发之jQuery单页面开发的相关文章

【技术干货】前端开发之IONIC移动端开发

本文作者:上海驻云Web前端工程师 著名2.5次元患者 黄志彪 (头像与真人一模一样) 以下正文 一:前言 Ionic是一套HTML5 Hybrid Mobile应用开发框架,基于AngularJS框架,使用Sass框架编写核心CSS代码,并且提供了一套CSS组件库和JavaScriptUI库,支持订制Android和IOS插件,支持PhoneGap库开发移动端原生应用,使用Ionic可以很方便的开发跨平台的移动应用.接下来介绍如何在MAC下搭建Ionic开发平台和开发移动端应用. 二:Ioni

前后端分离之Spring&Vue单页面开发(2)

前言     需求: 最近本人在学习SpringBoot,希望自己能搭一个简单的Demo应用出来,但是搭到前端的时候遇到了困惑,因为网络上大部分教程前端都是应用模板引擎thymeleaf生成的,它给我的感觉就是一个进化版的JSP,但是很明显这种开发方式已经有些落后了.现在前端越来越工程化,Angular/Vue/React等框架非常流行,所以我希望搭建一个更符合技术进步方向的前端应用(我选择了相对容易入门的Vue).     问题: 在查阅资料过程,我发现SpringBoot和Vue相关的入门材

jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介_jquery

触摸事件(touch)在 jQuery Mobile 中有一些触摸事件是可定制的.然而,这些事件仅当与支持触摸功能的设备进行交互的用户访问您的 jQuery Mobile 网站时才可用.当这些事件可用时,您可以触发任何自定义java script 作为对五种不同的事件的响应tap.taphold.swipe.swipeleft 和 swiperight. tap(轻击):一次快速完整的轻击后触发 taphold(轻击不放):轻击并不放(大约一秒)后触发 swipe(滑动):一秒内水平拖拽大于30

JQuery移动页面开发之屏幕方向改变与滚屏的实现_jquery

方向改变事件(orientationchange)当设备的方向变化(设备横向持或纵向持)此事件被触发.绑定此事件时,你的回调函数可以加入第二个参数,作用为描述设备横或纵向的属性,"portrait"或;landscape".这些值也会作为class值加入到html的元素中,使你可以通过css中的选择器改变他们的样式.注意现在当浏览器不支持orientationChange事件的时候我们绑定了resize 事件. 手持设备方向改变时执行 $(window).bind( 'ori

详解jQuery移动页面开发中的ui-grid网格布局使用_jquery

在移动设备上,屏幕宽度狭窄,因此通常不使用多栏布局,但是有时你可能需要将小的元素(如按钮或并排导航标签,例如)多列排列在一起.Jquery Mobile 框架提供了一种简单的方法构建基于css 的分栏布局,叫做ui-grid Jquery Mobile 提供有四个预设的布局,可以在任何情况下都需要列 两列(使用ui-grid-a类) 三列(使用ui-grid-b类) 四列(使用ui-grid-c类) 五列(使用ui-grid-d类) 网格是100%的宽度,完全看不见的(没有边界或背景)和没有ma

jQuery移动页面开发中主题按钮的设计示例_C 语言

在白色图标后的半透明的黑色圆圈确保了在任何背景色下图片都能够清晰显示,也使它能很好的工作在Jquery Mobile主题系统中.以下是一些在不同主题样式下图标按钮的例子 "A"主题下的图标按钮 data-theme="a" <div data-role="content"> <div data-role="controlgroup" data-type="horizontal"> &

使用jquery.pjax实现SPA单页面应用

前面我有文章介绍了前端路由和Pjax单页面应用方面的实例应用,今天我来和大家分享一个单页面应用神器jquery.pjax.js.它是基于jQuery的pjax插件,使用方便,功能完善.我会结合实例给大家讲解使用jquery.pjax.js. 在上一期文章中,我们了解了Pjax的实现原理,它就是利用了HTML5的Pushstate+ajax增强了页面局部刷新功能,它在我们原有的ajax功能上,实现了可以记录浏览历史,可以使用浏览器前进后退功能,浏览器的url可以跟随内容变化,而整个页面可以只刷新某

spring-java单页面应用和多页面应用的区别是什么?哪些网站做成单页面应用好,又有哪些网站做成多页面应用好?

问题描述 java单页面应用和多页面应用的区别是什么?哪些网站做成单页面应用好,又有哪些网站做成多页面应用好? 我现在工作做的网站是给企业和政府用的办公系统, 后台主要用了MySQL.SpringMVC.公司自研的jdbc框架: 前端用的是jquery.angularjs,requirejs: UI部门负责页面的设计及样式. 我们这做出来的都是一个只有index.html的单页面应用,不像我刚开始学的那样是由很多jsp页面相互之间跳转组成的应用. 这导致了一个问题:项目用了RESTful风格,后

推荐7款超棒的单页面网站设计模板 关键是免费!

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 之前我们推荐过Bootstrap的实用开发教程和8款HTML5实现的特效和应用,反映非常强烈,很多前端爱好者纷纷要求多分享些类似的教程和模板.今天我们推荐的这7套单页面网站设计模板不仅带有独立的在线演示,并且全部免费下载!如果你也喜欢我们的素材教程,请加入我们的极客标签吧! 响应式的单页面网站模板 - Brushed Brushed 是一款单