Angular 4.x 修仙之路 —— 之学习笔记

参考地址:https://segmentfault.com/a/1190000008754631

本文宗旨:东一榔头西一棒子,零零散散提示点
  • 性能优化:减少检测链长度,实现局部的变化检测,使用onpush策略
  • ES5中,编译阶段,变量声明和函数声明会自动提升,而函数表达式不会自动提升。(原来js自己也有编译阶段);函数声明:function Animal(){}; 函数表达式:var Animal = function(){};
  • ES6、Typescrip等转换成ES5,类会转换成函数表达式
  • 基于上面原因,angular中使用forwardRef来解决依赖的先后定义问题(provider声明时用)
  • OpaqueToken与InjectionToken出现的原因:解决token起名(字符串)的重复问题
  • InjectionToken相比OpaqueToken的优势:避免用户使用OpaqueToken时忘记new Inject(opaqueTokenName)
  • 在angular中,host代表宿主的意思。宿主代表指令等所在的元素。
  • 指令分为:属性指令与结构指令,一个更改样式,一个更改结构
  • ngTemplateOutlet就是 ngTemplate出口 的意思,它的值对应一个ngTemplate引用
  • 用于定义模板
  • 是一个逻辑容器
  • 使用rxjs的防反跳debounceTime
  • 随时记得取消订阅
  • 所谓的模板变量就是指 #child


  • 组件可以继承,但只能继承逻辑部分,像@component定义的元数据不能继承
  • 组件通信的常用方式:@Input、@Output、@ViewChild、模板变量、MessageService、Broadcaster(后两个,本质上都是用的rxjs)
  • 基于 [译] 关于 ExpressionChangedAfterItHasBeenCheckedError 错误你所需要知道的事情 的理解:为啥先更新所有子组件或指令的输入属性值,再执行他们的ngOnInit,OnChanges,ngDoCheck等方法呢?答:你不给人家传入参数,人家怎么知道如何初始化等一系列操作。
  • 没有在模板中显示调用组件的,都要记得在entryComponents中声明,以让编译器将其编译。否则编译器会认为其是无用代码。
  • 如果没有在模板中显示调用组件,又没有通过路由的形式实例化,就只能动态创建组件实例了,需要用到ComponentFactoryResolver
  • 可以用进行逻辑分组,又不会产生dom节点

你可能感兴趣的:(Angular 4.x 修仙之路 —— 之学习笔记)