AngularJs中组件---component的相关总结 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (26)
目录1. 前言2. 综述3. 创建并配置component组件4. 基于component组件的应用程序结构5. 使用案例
前言  组件component是AngularJs中一个非常重要的概念,一个项目的前端代码结构可以完全以组件component为单位进行实现,也就是说项目的不同页面(比如列表页、详情页、编辑页)或者通用功能(比如表格渲染组件、分页组件)都可以设计为一个独立的component,再通过路由配置关联起来,实现功能需求。本篇以AngularJs官方文档为根据,对组件相关内容进行总结。
综述  在Angular中,component是一种特殊的指令(directive),相比于directive,它的配置要更简单,这很适合于基于组件的应用程序结构,也使得使用类似于Web Components或者Angular 2风格的应用程序结构来编写代码要更容易。
组件component的优点
比原生指令(directive)配置更加简单提供了更加健全的默认设置和最佳实践可以优化基于component的应用结构编写component这种directive使得升级到Angular...阅读全文

AngularJs中$q服务(service)的使用 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (28)
目录1. 前言2. 综述3. $q构造函数4. Deferred API5. Promise API6. 链式promises7. Kris Kowal’s Q和$q的区别8. 使用格式9. 提供的方法10. 使用案例一11. 使用案例二
前言  $q服务的实现与ES6(ES2015)中的promise十分相似,这种方式改变了传统长期使用的JavaScript异步编程方式-处理回调函数。试想一下,如果有这样的业务逻辑:我们需要根据某个异步ajax请求的结果是否符合要求,再发起一个异步请求,在回调函数中对响应数据进行请求后再发起异步请求… …当出现这样的异步嵌套逻辑,代码结构就会变得很差。promise正是改变了这种情况,以一种流式的方式对异步请求进行声明和处理,表现出顺序的编码结构。本篇对$q服务的常用内容进行总结,而对于promise的学习,推荐阮一峰的ES6标准入门。
综述  $q是AngularJs中的一个服务,可以用来异步执行函数,并在异步请求执行完成时使用返回的结果。$q是对Kris Kowal提出的Kris Kowal’s Q中的promises/deferred对象的...阅读全文

AngularJs中使用拦截器interceptor对全局HTTP错误进行统一处理 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (36)
目录1. 前言2. 相关背景知识2.1. AngularJs的拦截器interceptor2.2. AngularJs的$httpProvider2.3. AngularJs模块加载前的配置config()2.4. AngularJs的$q服务2.5. AngularJs的$on服务2.6. AngularJs的运行块run()方法3. HTTP错误拦截器的实现3.1. 创建错误拦截服务工厂3.2. 向$httpProvider配置错误拦截器3.3. 注册运行块run,监听错误结果进行回调处理
前言  在web开发的各种业务场景中,http请求无疑是家常便饭,任何前后端交互数据都需要通过http请求进行传输。同时我们知道,HTTP响应有很多状态码,对应着很多种不同的服务处理结果。在这种情况下,如果项目中每一处http请求中我们都要对各种响应结果做以判断的话,那么整个工程中就会出现大量重复代码,这样做会带来不少问题,比如:重复劳动,代码结构不清晰、核心逻辑不明确,一旦对错误处理的需求变更就要对每一处进行修改、费时费力且容易遗漏。  针对这样的情况,在以AngularJs为前端框架的项目...阅读全文

JavaScript的预加载与懒加载 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (28)
目录1. 预加载1.1. 目的1.2. 做法2. 懒加载2.1. 目的2.2. 做法2.3. 案例
预加载目的  增强用户的体验,当用户需要查看时可直接从本地缓存中渲染。。否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白。但会加载服务器的负担。并且,如果不设置预加载,那么当需要渲染十分大的图片时,可能就会有“逐行扫描渲染”的感觉,用户体验不好。使用预加载的话,我们可以在图片完整渲染完成之前在页面上设置“loading”类的图标提示,而当图片数据完全获取后一次性直接将图片展现出来,提升用户体验。
做法典型方法如下:1234567891011function loadImage(url, callback) {    var img = new Image();    img.src = url;    if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数 防止IE6不执行onload BUG        callback.call(img);        return;    }    img.onloa...阅读全文

客户端浏览器检测 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (32)
目录1. 前言2. 检测方法与主要参数3. navigator对象的主要参数4. 方法5. 主流浏览器的userAgent示例5.1. Chrome5.2. Firefox5.3. Safari5.4. Opera5.5. IE5.6. IOS和Android6. 对浏览器客户端检测的应用实例7. 客户端检测代码
前言  几种web浏览器在实现相关标准时会有一些差异和区别,这可能会给开发带来一些问题。此时就会需要进行客户端检测从而给出不同的方案。但是,从根本上来讲,只要能够找到更通用的方法,就应该优先采用更通用的方法,先设计最通用的方案,然后再使用特定于浏览器的技术增强该方案。《JavaScript权威指南》相关描述如下:
检测方法与主要参数navigator对象的主要参数
方法
主流浏览器的userAgent示例ChromeMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36
FirefoxMozilla/5....阅读全文