Angular 服务对象的作用范围
1.高阶话题:服务对象的作用范围
声明服务提供者的方式:
方式1:在根模块中提供服务对象-----在整个应用中服务是单例
@Injectable({ providedIn:'root' })
export class TimerService{ }
方式2:在组件中提供服务对象----在每个组件实例中服务都是有一个实例的
@Injectable()
export class TimerService{ }
----------------------------------------
@Component({
.....
providers:{ TimerService }
})
export class LoginComponent{ }
注意:项目中只要服务对象中有属性,只能用方式2;否则推荐使用方式1
2. 面试严重加分项:TypeScript
Angular从V2.x开始使用TS编写;Vue.js从V3开始使用TS编写;
中文网:http://www.tslang.cn
TS是由微软编写的一门基于JS又高于JS的编程语言。
浏览器不支持TS,其使用步骤:
1.下载TS的编译器
npm i -g typescript
2.编写.ts文件,使用编译器转化为.js
tsc hello.ts
//得到hello.js
TS学习手册:
https://www.tslang.cn/docs/handbook/basic-types.html
TS的扩展特性:
1.TS是强类型语言 ------JS是弱类型语言
强类型语言的特点:变量、形参、函数都要声明类型
uname:string
f1( n1:number ):boolean{
return true
}
常用的数据类型关键字:string/number/boolean/any/number[]/Object/Date/void
2.TS对属性和方法成员定义三种访问修饰符:
private:私有的,私有成员只能在本类内部使用
protected:被保护的,被保护的成员只能在本类内部及子类内部使用
public:公共的,公共成员可以在本类内部以及外部使用
提示:一般情况下,class内属性不应该让外界随便访问,通常设置为private;
方法一般允许调用的,通常设置为public
3.访问修饰符的特殊用法
下述两种用法的作用相同
1. class Emp{
private age:number
constructor( age ){
this.age =age
}
}
2. class Emp{
constructor( private age:number ){
}
}
4.面向对象编程-------class(类)和interface(接口)
interface:接口,是一种特殊的类,规范“要求某个class必须具备XXX方法”,如管道里
必须提供transform方法
interface Runnable {
start() //接口中的方法没有主体!
stop()
}
----------------------------------------------------
class Car implements Runnable {
start(){} //接口的实现者必须提供指定的方法,要有主体
stop(){}
.......
}
5.装饰器
见手册 https://www.tslang.cn/docs/handbook/decorators.html
面试题:前端体系中有哪些发起异步请求的工具?各自的利弊?
工具名 本质 优劣势
原生XHR let xhr =new XHRHttpRequest() 浏览器支持的原生技术;基于回调方式处理响应
JQuery.ajax() 也是XHR,只是进一步的封装而已 比原生要简单;基于回调方式处理响应;
Axios 也是XHR,只是进一步的封装而已 比原生要简单;基于Promise处理响应;可以 排队、并发、撤销;
NG HttpClient 也是XHR,只是进一步的封装而已 比原生要简单;基于“观察者模式”处理响 应;可以排队、并发、撤销
Fetch 不再是XHR,是W3C提出的新技术, 比XHR从根本上就更加先进;天然基于 有望取代XHR Promise;目前浏览器还有兼容性问题
"马走日象走田" ------------------"双炮枪"组合连招
JS类/接口/原型 ------------------设计模式(23+1中) JavaScript设计模式(书)
23中设计模式之一:观察者模式的原理:
Observable:可被关注的对象,在未来某个不确定的时间点可能抛出特定的事件。
Subscribe:订阅,建立与可被关注的对象的契约,一旦得到新消息立即会被通知到
3.Angular官方提供的服务对象-------------httpclient
HttpClient服务:是Angular提供的用于发起异步XHR请求对象
使用步骤:
1.在主模块中导入HttpClientModule模块
//app.module.ts
imports:[ BrowserModule,HttpClientModule]
2.在组件中声明依赖于HttpClient服务对象,就会被自动注入进来
constructor(private http:HttpClient){}
3.调用HttpClient实例实现异步请求
this.http.get( url ).subscribe( (res)=>{ })
4.面试题:组件的生命周期钩子函数
手册地址:https://angular.cn/guide/lifecycle-hooks
Angular中的组件的生命周期钩子函数调用顺序:
(0)constructor() 组件对象被创建了
(1)ngOnChanges() 组件绑定的属性值发生改变
(2)ngOnInit() 组件初始化完毕-------等同于Vue.js的mounted
(3)ngDoCheck() 组件检查到了系统对自己的影响
(4)ngAfterContentInit() 组件的内容初始化完成
(5)ngAfterContentChecked() 组件的内容发生变化需要检查
<myc01><p>{{uname}}</p></myc01>
(6)ngAfterViewInit() 组件的视图初始化完成
(7)ngAfterViewChecked() 组件的视图发生变化需要检查
template:'<p>{{uname}}</p>'
(8)ngOnDestroy() 组件即将从DOM树上卸载,适合执行一些资源释放性语句
,例如:定时销毁....
*ng="false"
Angular 服务对象的作用范围的更多相关文章
- AngularJS_01之基础概述、设计原则及MVC设计模式
1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...
- 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...
- Nodejs之MEAN栈开发(五)---- Angular入门与页面改造
这个系列一共会涉及两个JavaScript框架的讲解,一个是Express用做后端,一个是Angular用于前端.和Express一样,Angular分离内容,处理视图.数据和逻辑.和MVC模式很相似 ...
- Angular 基础入门
简介 什么是AngularJS 一个功能非常完备的前端框架,通过增强HTML的方式提供一种便捷开发Web应用程序的方式 其核心特点就是几乎无任何DOM操作,让开发人员的精力和时间全部集中于业务 MVC ...
- 走进AngularJs(一)angular基本概念的认识与实战
一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维 ...
- Angular.JS学习笔记——1
内容来自:http://www.runoob.com/angularjs/angularjs-intro.html AngularJS 是一个 JavaScript 框架.它是一个以 JavaScri ...
- angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)
昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...
- angular源码分析:angular中的依赖注入式如何实现的
一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...
- Angular JS 学习之 Scope作用域
1.Scope作用域是应用在HTML(视图)和JavaScript(控制器)之间的纽带: Scope是一个对象,有可用的方法和属性: Scope可应用在视图和控制器上: 2.当你在AngularJS中 ...
随机推荐
- 作业十一——LL(1)文法的判断,递归下降分析程序
作业十一——LL(1)文法的判断,递归下降分析程序 判断是否为LL(1)文法 选取有多个产生式的求select,只有一条产生式的无需求select 同一个非终结符之间求交集,全部判断为空后则为LL(1 ...
- 基于java的OpenCV安装和配置
目录 OpenCV简介 OpenCV下载安装 eclipse里引用jar包和配置 OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Window ...
- 【抓包工具】tcpdump
tcpdump - dump traffic on a network 根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支 ...
- MyBaties一级缓存
2019独角兽企业重金招聘Python工程师标准>>> 一.一级缓存简介 在系统代码的运行中,我们可能会在一个数据库会话中,执行多次查询条件完全相同的Sql,鉴于日常应用的大部分场景 ...
- golang 线上项目部署折腾之一
最近自己使用golang折腾了一点东西,可是需要部署到线上才好玩,那么服务器使用了aws,然后使用了docker和没有使用docker部署了一次.简单记录一下过程 aws服务器 为什么使用aws呢,说 ...
- 使nfs同步生效
我们在使用nfs的时候会遇到往nfs server端写个文件,client需要很久才能生效,我们想让立刻生效有两种办法:1.mount -t nfs -o noac IP:/data/xxxx /xx ...
- 数学--数论---P4718 Pollard-Rho算法 大数分解
P4718 [模板]Pollard-Rho算法 题目描述 MillerRabin算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接受的.Pollar ...
- 【摘抄】深入解析Windows操作系统
一.线程是一个进程内部的实体,也是Windows执行此进程时的调度实体.若没有线程,进程的程序将不可能运行.线程包含以下部件: 1.一组代表处理器状态的CPU寄存器中的内容. 2.两个栈:一个用于线程 ...
- 跟哥一起学python(3)- 理解“变量”
我们把前面的程序稍微改一下,来了解python中的变量. # file: ./4/4_1.py # 定义变量 hello_str = "hello, world!" # 字符串打印 ...
- Linux(Ubuntu) MySQL数据库安装与卸载
安装 修改远程访问 卸载 安装 首先检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 没有显示已安装结果,则没有安装 如若已安装,可以选择删除.(删除方 ...