初学者眼中的的Angularjs(三)

八、服务

服务是一个对象或函数,对外提供特定的功能。
8.1内置服务
1、$location是对原生Javascript中location对象属性和方法的封装。
这里写图片描述

2、timeout&interval对原生Javascript中的setTimeout和setInterval进行了封装。

这里写图片描述
3、$filter在控制器中格式化数据。

这里写图片描述
4、$log打印调试信息
这里写图片描述

5、$http用于向服务端发起异步请求。
这里写图片描述
同时还支持多种快捷方式如 http.get() http.post()、$http.jsonp。
注:各参数含义见代码注释。

8.2自定义服务
通过上面例子得知,所谓服务是将一些通用性的功能逻辑进行封装方便使用,AngularJS允许将自定义服务。
1、factory方法
这里写图片描述
2、service方法
这里写图片描述

3、value方法定义常量
这里写图片描述

在介绍服务时曾提到服务本质就是一个对象或函数,所以自定义服务就是要返回一个对象或函数以供使用。

九、模块加载

AngularJS模块可以在被加载和执行之前对其自身进行配置。我们可以在应用的加载阶段配置不同的逻辑。
这里写图片描述

9.1配置块

1、通过config方法实现对模块的配置,AngularJS中的服务大部分都对应一个“provider”,用来执行与对应服务相同的功能或对其进行配置。
比如$log、$http、$location都是内置服务,相对应的“provider”分别是$logProvider、$httpProvider、$locationPorvider。

下图以$log为例进行演示,修改了配置
这里写图片描述
下图以$filter为例进行演示,实现相同功能
这里写图片描述

9.2运行块

服务也是模块形式存在的对且对外提供特定功能,前面学习中都是将服务做为依赖注入进去的,然后再进行调用,除了这种方式外我们也可以直接运行相应的服务模块,AngularJS提供了run方法来实现。
这里写图片描述
不但如此,run方法还是最先执行的,利用这个特点我们可以将一些需要优先执行的功能通过run方法来运行,比如验证用户是否登录,未登录则不允许进行任何其它操作。

注:此知识点意在了解AngularJS的加载机制。

十、路由

一个应用是由若个视图组合而成的,根据不同的业务逻辑展示给用户不同的视图,路由则是实现这一功能的关键。

10.1 SPA

SPA(Single Page
Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把Web应用包一个壳,这个壳本质上是浏览器)变成一个“原生”应用。

在PC端也有广泛的应用,通常情况下使用Ajax异步请求数据,然后实现内容局部刷新,局部刷新的本质是动态生成DOM,新生成的DOM元素并没有真实存在于文档中,所以当再次刷新页面时新添加的DOM元素会“丢失”,通过单页面应可以很好的解决这个问题。

10.2 路由

在后端开发中通过URL地址可以实现页面(视图)的切换,但是AngularJS是一个纯前端MVC框架,在开发单页面应用时,所有功能都在同一页面完成,所以无需切换URL地址(即不允许产生跳转),但Web应用中又经常通过链接(a标签)来更新页面(视图),当点击链接时还要阻止其向服务器发起请求,通过锚点(页内跳转)可以实现这一点。

实现单页面应用需要具备:
a、只有一页面
b、链接使用锚点

通过上面的例子发现在单一页面中可以能过hashchange事件监听到锚点的变化,进而可以实现为不同的锚点准不同的视图,单页面应用就是基于这一原理实现的。

AngularJS对这一实现原理进行了封装,将锚点的变化封装成路由(Route),这是与后端路由的根本区别。

在1.2版前路由功能是包含在AngularJS核心代码当中,之后的版本将路由功能独立成一个模块,下载angular-route.js

10.2.1 使用
1、引入angular-route.js
这里写图片描述
2、实例化模块(App)时,当成依赖传进去(模块名称叫ngRoute)。
这里写图片描述
3、配置路由模块
这里写图片描述
4、布局模板
通过ng-view指令布局模板,路由匹配的视图会被加载渲染到些区域。
这里写图片描述

10.2.1 路由参数

1、提供两个方法匹配路由,分别是when和otherwise,when方法需要两个参数,otherwise方法做为when方法的补充只需要一个参数,其中when方法可以被多次调用。
2、第1个参数是一个字符串,代表当前URL中的hash值。
3、第2个参数是一个对象,配置当前路由的参数,如视图、控制器等。

a、template 字符串形式的视图模板
b、templateUrl 引入外部视图模板
c、controller 视图模板所属的控制器
d、redirectTo跳转到其它路由

4、获取参数,在控制中注入$routeParams可以获取传递的参数
这里写图片描述
这里写图片描述

十一、其它

11.1 jQuery

在没有引入jQuery的前提下AngularJS实现了简版的jQuery
Lite,通过angular.element不能选择元素,但可以将一个DOM元素转成jQuery对象,如果引提前引入了jQuery则angular.element则完全等于jQuery。

11.2 bower

基于NodeJS的一个静态资源管理工具,由twitter公司开发维,解决大型网站中静态资源的依赖问题。 npm node package
manager 1、依赖NodeJS环境和git工具。 2、npm install -g bower安装bower 3、bower
search 查找资源信息 4、bower install 安装(下载)资源,通过#号可以指定版本号 5、bower info
查看资源信息 6、bower uninstall 卸载(删除)资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值