Angular核心概念

1、集成开发环境@angular/cli

  • IE8以后才有debugger工具
  • 2009,nodejs发布,前端Big Bang

1.1 基于NodeJS的工具链

打包工具css

  • grunt 对js代码作合并、压缩、混淆
  • gulp grunt的改进版
  • webpck 打包工具,静态模块打包器,一个标准

自动化测试工具html

  • karma
  • jasmine

CSS预编译前端

  • Material Design 中文 质感设计
    • 每一段时间,都有一种风格
    • 苹果 倡导 扁平化,极简化
    • Google 倡导 Material Design
  • less/sass 作css预编译

1.2 NodeJS问题 npm

  • 墙,有些模块装不上
  • 对package管理很差,目录嵌套太深

1.3 开发Angular须要的开发工具

依次是:node

  • webpack
  • TypeScript编译器
  • karma/jasmine 自动化单元测试
  • Protractor 为Angular应用量身订制的集成测试工具

1.4 Angular CLI

官网:https://cli.angular.io/webpack

npm install -g @gngular/cli
ng --version
ng help
ng new my-dream-app
cd my-dream-app
ng serve

# 国内推荐使用cnpm

2、三大核心概念

  • Angular1.x没有灵魂
  • Angular核心概念是“组件化”
    • 分治,分而治之
    • 可复用
  • 组件分到每一个模块里去,用路由来控制这些模块的加载和初始化

2.1 Component

组件树

单向数据流

刷新策略

组件树生成器

https://github.com/compodoc/ngdgit

2.2 NgModule

https://angular.io/guide/ngmodule-faqgithub

什么是模块?

NgModule做用

  • 帮助组织业务模块
  • 是Angular/CLI工具的打包依据,保证js是异步加载
  • 是异步加载的最小单位

切分模块

  • 浏览器对http请求有并发数限制
    • IE9 2个
    • Firefox/Chrome 4个

切分web

切分原则chrome

2.3 Route

前端为何须要Router?

若是没有路由shell

  • 浏览器的前进后退按钮无法用
  • 没法把URL拷贝并分享给你的朋友

路由是什么?

  • 从本质上讲,表示的是页面上的一个状态
  • 从数据结构讲,是一个tree型结构

静态路由

  • 自动把这些组件打包到一个trunk里去

异步路由

路由守护

3、架构特点

依赖注入、数据绑定

3.1 依赖注入

只有一种注入方法:构造器注入

注射器自己也会构成一个tree型结构

查看注射器里面有什么属性和方法:chrome debugger

  • 每一个HTML标签上面都会有一个注射器实例
  • 注射是经过constructor进行的
  • @Injectable是@Component的子类

DI与DataBinding相关文章

https://vsavkin.com/dependency-injection-in-angular-1-and-angular-2-d69589979c18

http://web.jobbole.com/88605/ 中文翻译

https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html

https://pascalprecht.github.io/slides/angular-2-change-detection-explained/#/

3.2 数据绑定

  • Angular是第一个将双向数据绑定概念引用到前端开发来的
  • 新版本的Angular已经完全重写了脏检查机制
  • 在JS里面,有3个异步调用可能形成数据模型的修改
    • 事件回调
    • Timer的回调
    • Ajax回调

4、UI库

  • PrimeNG :到目前为止最完善的开源免费UI组件库
  • NG-Zorro:来自阿里云的开源组件库
  • Jigsaw:来自ZTE中兴通信的开源组件库
  • Clarity:来自Vmware的组件库
  • Angular-Material:Angular官方提供的组件库
  • Ionic :专门为Angular设计的移动端组件库

5、参考资源推荐

  • ng2-admin
  • JHipster-后端基于SpringMVC
  • NiceFish

参考

35分钟掌握Angular核心概念 - Youbute

35分钟掌握Angular核心概念 - Bilibili

PPT