文档章节

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
粉丝 81
博文 303
码字总数 95443
作品 0
南京
前端工程师
私信 提问
JavaScript MVW 框架 - AngularJS

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

匿名
2011/01/20
0
44
ngular2 VS Angular4 深度对比:特性、性能

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

机器的心脏
06/02
0
0
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
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

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
3
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部