文档章节

angular之DI理解

bosscheng
 bosscheng
发布于 2015/12/02 10:03
字数 490
阅读 245
收藏 0

    对于DI的理解:也就是说,我只要指出需要哪些对象,然后就有人把这些对象给我,而这个‘人’可能就是一个应用框架,也可能是一个测试容器,我不关系是谁,也不用关心他怎么得到这个对象的,这个‘人’,专业点的说法,就是‘容器’。

    而这边“我需要那些对象”的方式,也有很多种,比如可以直接声明一个属性,或者写一个注释,或者写一个配置文件来声明依赖关系,或者在函数的参数声明,目前angular所采用的方式是函数参数的形式,和一种变形的注释形式来方式以防止文件压缩导致破坏名称。


angular中的DI

    在angular 中,所有主要编程元素都需要通过某种方式注册进去,例如 myModule.service('serviceName',function(){})

实际上就是把后面的函数加入到一个容器中,要注意的是:angular全面实现了延迟初始化,也就是说,当这个对象没有被人需要的时候,他是不会被创建出来的,这样对于提升性能有定帮助,尤其是加快的启动速度。

    在angular中,是不存在正真的全局对象,所以你可以方向在同一个页面使用多个app,而不用担心互相干扰 ,但是容器有需要一个容器存放,在angular中,这个容器就是module,angular.module('someModule',['dep1','dep2']).

    根据DI的原理:被注入的对象通常是单例的,因为创建了一个,就可以始终使用他,不需要多次创建,因此,如果你需要在angular中跨controller共享数据或者通讯,那么你就可以创建一个service/factory/provide,然后把他们分别注入到两个controller 中去,而这两个controller就会共享这个对象了。




© 著作权归作者所有

共有 人打赏支持
bosscheng
粉丝 79
博文 299
码字总数 91232
作品 0
南京
前端工程师
JavaScript MVW 框架 - AngularJS

Angular JS (Angular.JS) 是一组用来开发 Web 页面的框架、模板以及数据绑定和丰富 UI 组件。它支持整个开发进程,提供 Web 应用的架构,无需进行手工 DOM 操作。 AngularJS 很小,只有 60K,...

匿名
2011/01/20
0
44
All About Angular 2.0

angular All About Angular 2.0Posted by Rob Eisenberg on November 6th, 2014. Have questions about the strategy for Angular 2.0? This is the place. In the following article I'll e......

Ethan_prog
2015/03/06
0
0
ngular2 VS Angular4 深度对比:特性、性能

在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。 Google的Angular团队已于3月23日发布了Angular4,而期待已久的Angular2版本则是之前版本的完全重构。 对于成熟的开发人员...

机器的心脏
06/02
0
0
5ThingsToKnowBeforeYouGetStartedWithAngulerJS

AngularJS is Entirely Client-Side AngularJS is written in JavaScript, and it functions entirely on the client side. This means two things for your app. First, you can run Angula......

perfectspr
2014/12/16
0
0
【前端】—聊聊我认识的Angular

前言 最近接触的项目前端用到了Angular框架,之前略有耳闻,从vue换到Angular,感觉东西差不多,还是要系统学习的,先来了解下。 正文 1、Angular 的发展 AngularJS 是一款来自Google的前端J...

zt15732625878
05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)

转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions) 高级类型 可辨识联合(Discriminated Unions) 你可以合并单例类型,联合类型,类型保护和类型别名来创建一个叫做 ...

durban
13分钟前
1
0
画图工具

目标是不要让我自己摆放,那样会打断我的思路。要自己会摆放,我写字就好。 纠结对齐的我在也不会因为一个像素的问题小心翼翼的移动鼠标了。因为它对不齐你也管不了。 Graphviz https://www...

郭大鹏
14分钟前
1
0
在Visual Studio中使用GitHub(使用篇)

上一篇中已经介绍了如何在windows下安装和配置Git,并且详细说明了如何和GitHub连接。 这里就详细的说明下如何在Visual Studio中使用GitHub。这里也是一个简单的Git教程。 注:非常非常简单的...

Jokeny
14分钟前
1
0
tomcat 在liunx系统中shutdown后进程仍然存在解决办法

这个在windows下没有碰到过,因为此前跑Tomcat都是以服务而不是命令脚本的形式跑的,而且已经换了一个项目,所以暂时不考察windows下是否存在该问题。 难道是Tomcat版本问题?或者用带内存泄...

乱舞
15分钟前
1
0
区块链10年了,还未落地,它失败了吗?

几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 有人说,比特币是建...

linux-tao
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部