Angular 4依赖注入学习教程之简介(一)
学习目录
- angular 4 依赖注入教程之一 依赖注入简介
- angular 4 依赖注入教程之二 组件服务注入
- angular 4 依赖注入教程之三 classprovider的使用
- angular 4 依赖注入教程之四 factoryprovider的使用
- angular 4 依赖注入教程之五 factoryprovider配置依赖对象
- angular 4 依赖注入教程之六 injectable 装饰器
- angular 4 依赖注入教程之七 valueprovider的使用
- angular 4 依赖注入教程之八 injecttoken的使用
本文主要给大家介绍的是关于angular 4 简介的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:
本系列教程的开发环境及开发语言:
基础知识
angular cli 基本使用
1、安装 angular cli (可选)
npm install -g @angular/cli
2、创建新的项目
ng new project-name
3、启动本地服务器
cd project-name ng serve
依赖注入简介
在介绍依赖注入的概念和作用前,我们先来看个例子。各位看官请睁大眼睛,我要开始 "闭门造车" 了。
示例说明
一辆车内部构造很复杂,出于简单考虑,我们就只考虑三个部分:车身、车门和引擎。接下来我们来定义各个部分。
1.定义车身类
export default class body { }
2.定义车门类
export default class doors { }
3.定义车引擎类
export default class engine { start() { console.log('????开动鸟~~~'); } }
4.定义汽车类
import engine from './engine'; import doors from './doors'; import body from './body'; export default class car { engine: engine; doors: doors; body: body; constructor() { this.engine = new engine(); this.body = new body(); this.doors = new doors(); } run() { this.engine.start(); } }
一切已准备就绪,我们马上来造一辆车:
let car = new car(); // 造辆新车 car.run(); // 开车上路咯
车已经可以成功上路,但却存在以下问题:
- 问题一:在创建新车的时候,你没有选择,假设你想更换汽车引擎的话,按照目前的方案,是实现不了的。
- 问题二:在汽车类内部,你需要在构造函数中手动去创建各个部件。
为了解决第一个问题,提供更灵活的方案,我们可以重构一下已定义的汽车类,具体如下:
export default class car { engine: engine; doors: doors; body: body; constructor(engine, body, doors) { this.engine = engine; this.body = body; this.doors = doors; } run() { this.engine.start(); } }
重构完汽车类,我们来重新造辆新车:
let engine = new newengine(); let body = new body(); let doors = new doors(); this.car = new car(engine, body, doors); this.car.run();
此时我们已经解决了上面提到的第一个问题,要解决第二个问题我们要先介绍一下的概念。
依赖注入的概念
在软件工程中,依赖注入是种实现控制反转用于解决依赖性设计模式。一个依赖关系指的是可被利用的一种对象(即服务提供端) 。依赖注入是将所依赖的传递给将使用的从属对象(即客户端)。该服务是将会变成客户端的状态的一部分。 传递服务给客户端,而非允许客户端来建立或寻找服务,是本设计模式的基本要求。 —— *
看完概念是不是已经晕了,其实我们只要记住依赖注入的三种角色:使用者、服务(依赖对象)及注入器(injector)。接下来我们马上来看一下 angular 中依赖注入的应用。
angular 依赖注入的应用
更新后的汽车类
@injectable() export default class car { constructor( private engine: engine, private body: body, private doors: doors) {} run() { this.engine.start(); } };
具体应用
import { reflectiveinjector } from '@angular/core'; let injector = reflectiveinjector.resolveandcreate([car, engine, doors, body]); let car = injector.get(car); car.run();
看完上面的示例,我们前面提到的第二个问题,已经完美解决了哈。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
推荐阅读
-
Angular 4依赖注入学习教程之简介(一)
-
Angular 4依赖注入学习教程之ClassProvider的使用(三)
-
Angular 4依赖注入学习教程之ValueProvider的使用(七)
-
Angular 4依赖注入学习教程之InjectToken的使用(八)
-
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
-
Angular 4依赖注入学习教程之组件服务注入(二)
-
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
-
Angular 4依赖注入学习教程之Injectable装饰器(六)
-
Angular 4依赖注入学习教程之简介(一)
-
Angular 4依赖注入学习教程之组件服务注入(二)