源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Angular 4依赖注入学习教程之简介(一)

  • 时间:2021-04-30 16:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Angular 4依赖注入学习教程之简介(一)
[b]学习目录[/b] [list] [*][url=http://www.1sucai.cn/article/115317.htm]Angular 4 依赖注入教程之一 依赖注入简介[/url][/*] [*][url=http://www.1sucai.cn/article/115319.htm]Angular 4 依赖注入教程之二 组件服务注入[/url][/*] [*][url=http://www.1sucai.cn/article/115320.htm]Angular 4 依赖注入教程之三 ClassProvider的使用[/url][/*] [*][url=http://www.1sucai.cn/article/115322.htm]Angular 4 依赖注入教程之四 FactoryProvider的使用[/url][/*] [*][url=http://www.1sucai.cn/article/115326.htm]Angular 4 依赖注入教程之五 FactoryProvider配置依赖对象[/url][/*] [*][url=http://www.1sucai.cn/article/115329.htm]Angular 4 依赖注入教程之六 Injectable 装饰器[/url][/*] [*][url=http://www.1sucai.cn/article/115333.htm]Angular 4 依赖注入教程之七 ValueProvider的使用[/url][/*] [*][url=http://www.1sucai.cn/article/115334.htm]Angular 4 依赖注入教程之八 InjectToken的使用[/url][/*] [/list] 本文主要给大家介绍的是关于Angular 4 [url=http://edu.jb51.net/angularjs/angularjs-dependency-injection.html]依赖注入[/url]简介的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: [b]本系列教程的开发环境及开发语言:[/b] [list] [*][url=https://angular.io/]Angular 4 +[/url][/*] [*][url=https://github.com/angular/angular-cli]Angular CLI[/url][/*] [*][url=https://www.typescriptlang.org/index.html]TypeScript[/url][/*] [/list] [b]基础知识[/b] [b]Angular CLI 基本使用[/b] 1、安装 [url=https://github.com/angular/angular-cli]Angular CLI [/url](可选)
npm install -g @angular/cli
2、创建新的项目
ng new PROJECT-NAME
3、启动本地服务器
cd PROJECT-NAME
ng serve
[b]依赖注入简介[/b] 在介绍依赖注入的概念和作用前,我们先来看个例子。各位看官请睁大眼睛,我要开始 "闭门造车" 了。 [b]示例说明[/b] 一辆车内部构造很复杂,出于简单考虑,我们就只考虑三个部分:车身、车门和引擎。接下来我们来定义各个部分。 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(); // 开车上路咯
车已经可以成功上路,但却存在以下问题: [list] [*]问题一:在创建新车的时候,你没有选择,假设你想更换汽车引擎的话,按照目前的方案,是实现不了的。[/*] [*]问题二:在汽车类内部,你需要在构造函数中手动去创建各个部件。 [/*] [/list] 为了解决第一个问题,提供更灵活的方案,我们可以重构一下已定义的汽车类,具体如下:
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();
此时我们已经解决了上面提到的第一个问题,要解决第二个问题我们要先介绍一下[url=http://edu.jb51.net/angularjs/angularjs-dependency-injection.html]依赖注入[/url]的概念。 [b]依赖注入的概念[/b] 在软件工程中,依赖注入是种实现控制反转用于解决依赖性设计模式。一个依赖关系指的是可被利用的一种对象(即服务提供端) 。依赖注入是将所依赖的传递给将使用的从属对象(即客户端)。该服务是将会变成客户端的状态的一部分。 传递服务给客户端,而非允许客户端来建立或寻找服务,是本设计模式的基本要求。 —— 维基百科 看完概念是不是已经晕了,其实我们只要记住依赖注入的三种角色:使用者、服务(依赖对象)及注入器(Injector)。接下来我们马上来看一下 Angular 中依赖注入的应用。 [b]Angular 依赖注入的应用[/b] 更新后的汽车类
@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();
看完上面的示例,我们前面提到的第二个问题,已经完美解决了哈。 [b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程素材网的支持。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部