




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AngularJs应用页面切换优化方案在研发过程中整理了一些研发总结分享给大家。如本篇的在页面切换的过程中优化方案,欢迎大家跟帖交流。前言AngularJs被用来开发单页面应用程序(SPA),利用AJAX调用配合页面的局部刷新,可以减少页面跳转,从而获得更好的用户体验。Angular的ngView及其对应的强大路由机制,是实现SPA应用的核心模块。本文所说的页面切换指的就是这个路由机制,即根据不同的url展示不同的视图。有一种非常常见的场景:在切换至新页面后,需要通过AJAX调用从服务器请求一些数据,然后根据这些数据来展示页面。如果未做任何处理,那么页面会先加载新页面的html模版,但此时模板中的数据model还并没有被请求,因此会有一段时间显示空数据,非常影响用户体验。场景让我们以Angular官方给出的PhoneCat Tutorial App来说明这个问题。在PhoneCat项目的github主页上有这么一段话:“There is no dynamic backend (no application server) for this application. Instead we fake the application server by fetching static json files.”也就是说,这个示例项目中只是模拟了一个server,所以当页面请求phones.json和每个手机的详细数据时,这些请求会在非常短的时间内就完成了,我们并感觉不到展示页面存在什么问题。而在真实的网络环境中,请求这些json文件可能会消耗相对较长的时间。让我们来模拟一下网络请求响应时间较长的情况。在这里我用了express来代替原来的http-server,并在客户端请求数据时延迟5秒再做出响应:运行起来后可以看到,页面立即会显示出来,但是原本应该显示手机列表的区域是一片空白,直到5秒之后才将列表数据显示出来。点击一个手机名称进入详细信息页面,同样是一开始只显示了html模板的内容,然后才将参数数据填充到页面上。过程中页面会出现抖动,非常影响用户体验。使用resolve来提前请求数据在遇到这个问题时,我最先想到的就是添加一个loading提示:在网络请求前显示loading遮罩图片,网络请求结束后再将其隐藏。于是点击进入手机的detail页面后页面会呈现一个loading图片,像下图这样:可以看到,页面应该显示手机详细数据的区域显示空白,造成非常不好的用户体验。这是因为PhoneDetailCtrl的代码是在页面跳转发生后才执行的,而此时手机信息数据还没有从服务器获取到,也就是说$scope.phone这个model还未被赋值。有没有一种办法让这些数据在切换到这个页面之前就先准备好呢?答案当然是有,也就是这篇文章要介绍的主角resolve。我们知道ng-view是通过$routeProvider来订制页面路由规则,这个路由规则在phonecat项目源码中是这样定义的:为了让页面跳转之前执行一些事情,我们可以在路由规则中配置resolve参数。Resolve参数可以注入一组service到路由绑定的controller之中。如果其中的一个或多个service是异步对象($q.defer)时,那么只有当这些异步操作都完成后,页面才会跳转。利用这一点,我们就可以在页面跳转前先将手机详细信息数据请求到本地。跳转后,目标页面就会立即正常显示数据。我将手机详细信息页面的路由配置代码修改如下:在上面的代码中,我只能使用$route.current.params来获取phoneId参数,因为此时页面还未跳转,$routeParams是获取不到任何值的。经过这样配置resolve参数后,我就可以在PhoneDetailCtrl中注入一个名为phoneDetailsService的对象。PhoneDetailCtrl的代码如下:这样,就可以在页面跳转之前获取到请求的数据了。为页面加入切换动画为了让页面间的切换更平滑,可以在页面切换加入过渡动画。AngularJs对一些常用的指令比如ngRepeat、ngSwitch以及ngView都有动画的支持。AngularJs通过CSS来定义动画,要实现DOM元素的动画效果非常简单。当DOM元素变化的时候,AngularJs会在元素上添加特定的class: ng-enter,当元素被添加时会被应用; ng-move,当元素被移动时会被应用; ng-leave,当元素被删除时会被应用。我们可以对ng-view应用AngularJs动画,在phone-cat项目中,animation.css中的下列代码实现了切换页面的淡入淡出动画:.view-frame.ng-enter,.view-frame.ng-leave background: white; position: absolute; top: 0; left: 0; right: 0;.view-frame.ng-enter -webkit-animation: 0.5s fade-in; -moz-animation: 0.5s fade-in; -o-animation: 0.5s fade-in; animation: 0.5s fade-in; z-index: 100;.view-frame.ng-leave -webkit-animation: 0.5s fade-out; -moz-animation: 0.5s fade-out; -o-animation: 0.5s fade-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度顶管施工劳务分包合同范本:施工进度控制
- 二零二五版基于法院判决的债务偿还与再借款协议
- 2025版城市轨道交通项目可研报告编制与咨询服务合同
- 2025版整车运输与车辆融资租赁合同
- 二零二五年度合伙购买车辆用于旅游租赁服务协议
- 二零二五年度互联网行业招聘服务标准合同
- 2025版防水涂料研发与应用合作协议
- 2025房地产公司个人购房贷款提前还款协议
- 二零二五版范文下载授权许可合同范本
- 二零二五年度铁路货运车辆货物联运合同
- 食品生产企业采购管理制度
- 2025年游泳池设施设备器材安全检查制度(二篇)
- 2025考研408计算机基础综合真题及答案
- 职业病危害因素检测与评价-工作场所空气中粉尘浓度的测定
- 四川省广安市2024-2025学年高一下学期期末考试数学试题(含答案)
- 展台搭建施工管理办法
- 政协大走访活动方案
- 个人养老金课件
- 儿科穴位贴敷治疗讲课件
- 2025年湖北省中考英语试题(附答案)
- udi追溯管理制度
评论
0/150
提交评论