千家信息网

Angular8基础知识点有哪些

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关Angular8基础知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Angular CLI又称 Angular脚手架,用于快速生成项目或
千家信息网最后更新 2026年11月03日Angular8基础知识点有哪些

这篇文章给大家分享的是有关Angular8基础知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Angular CLI又称 Angular脚手架,用于快速生成项目或者组件的框架以提高效率。可以方便的生成angular app、component、service 等等, 并且可以通过参数,按照自己的需求去创建。可以说是angular开发必不可少的利器。
参考:https://cli.angular.io/

  • ng generate: 新建component、service、pipe, class 等

  • ng new: 新建angular app

  • ng update: 升级angular自身,以及依赖

  • ng version: 显示anuglar cli全局版本、以及本地的angular cli、angular code等的版本

  • ng add: 新增第三方库。会做2件事,1)基于npm安装node_modules, 2)自动更改配置文件,保证新的依赖正常工作

关于angular的依赖注入(dependency injection)

依赖注入是Angular实现的一种应用程序设计模式, 是Angular的核心概念之一。

依赖就是具有一系列功能的服务(service), 应用程序中的各种组件和指令(derictives)可能需要服务的功能。 Angular提供了一种平滑的机制,通过它我们可以将这些依赖项注入我们的组件和指令中。因此,我们只是在构建依赖关系,这些依赖关系可以在应用程序的所有组件之间注入。

使用依赖注入还有以下好处,

  1. 不需要实例化,(new 实例)。不需要关心class的构造函数里需要什么参数

  2. 一次注入(app module通过Providers注入),所有组件都可以使用。而且是用同一个service实例(Singleton),也就是说一个service里的数据是共分享的,可以用于组件间数据传递。

关于angular的编译,AOT和JIT的区别

每个Angular应用程序都包含浏览器无法理解的组件和模板。 因此,在浏览器内部运行之前,需要先编译所有Angular应用程序。

Angular提供两种编译类型:

  • JIT(Just-in-Time) compilation

  • AOT(Ahead-of-Time) compilation

区别在于,在JIT编译中,应用程序在运行时在浏览器内部进行编译;而在AOT编译中,应用程序在构建期间进行编译。
显而易见,AOT编译好处多多,因而是Angular的默认编译方式。主要优点

  • 由于应用程序是在浏览器内部运行之前进行编译的,因此浏览器会加载可执行代码并立即呈现应用程序,从而加快了呈现速度。

  • 在AOT编译中,编译器将与应用程序一起发送外部HTML和CSS文件,从而消除了对那些源文件的单独AJAX请求,从而减少了ajax请求。

  • 开发人员可以在构建阶段检测并处理错误,这有助于最大程度地减少错误。

  • AOT编译器将HTML和模板添加到JS文件中,然后再在浏览器中运行。 因此,没有多余的HTML文件可读取,从而为应用程序提供了更好的安全性。

Angular双向绑定

Angular双向绑定的原理

Angular的双向绑定,通过脏数据检查(Dirty checking)来实现。

  • 脏值检测的基本原理是存储旧数值,并在进行检测时,把当前时刻的新值和旧值比对。若相等则没有变化,反之则检测到变化,需要更新视图。

  • angular2中有了Zone.js。对于setTimeout,addEventListener、promise等都在ngZone中执行(换句话说,就是被zone.js封装重写了),angular并在ngZone中setup了相应的钩子,通知angular2做相应的脏检查处理,然后更新DOM。

Angular双向绑定效率问题

对于页面中需要绑定DOM元素极其多的情况(成百上千),必然会遇到效率问题。(具体还取决于PC、浏览器性能)。另外,脏检查超过10次(经验值?),就认为程序有问题,不再进行检查。
可以采用如下方式避免

  • 对于只用于展示的数据,使用单向绑定,而不是双向绑定;

  • Angular的数据流是自顶而下,从父组件到子组件单向流动。单向数据流向保证了高效、可预测的变化检测。因而组件化也是提高性能的一种手段。

  • 表达式(以及表达式所调用的函数)中少写太过复杂的逻辑

  • 不要连接太长的 pipe(往往 pipe里都会遍历并且生成新数组, pipe 在anglarJS(v1)中叫做filter)

  • 变化检测策略onPush. Angular有两种变化检测策略。Default是Angular默认的变化检测策略,也就是上述提到的脏检查(只要有值发生变化,就全部检查)。开发者可以根据场景来设置更加高效的变化检测方式:onPush。onPush策略,就是只有当输入数据的引用发生变化或者有事件触发时,组件才进行变化检测。

  • NgFor应该伴随trackBy方程使用。否则,每次脏值检测过程中,NgFor会把列表里每一项都执行更新DOM操作。

Angular数据绑定的三种方式

Name {{item.name}} Classes {{item | classPipe}} Classes {{classes(item)}}
  • 直接绑定: 大多数情况下,这都是性能最好的方式。

  • 绑定方法调用的结果:在每个脏值检测过程中,classes方程都要被调用一遍。如果没有特殊需求,应尽量避免这种使用方式。

  • pipe方式: 它和绑定function类似,每次脏值检测classPipe都会被调用。不过Angular给pipe做了优化,加了缓存,如果item和上次相等,则直接返回结果。

更多优化技巧,参考 angular绑定(脏检查)方面的性能优化技巧

关于angular的Module

什么是angular的Module

模块(Module)是一个我们可以对组件(Component),服务(service)和管道(pipe)进行分组的地方。 模块通过导出或隐藏这些元素来决定其他模块是否可以使用组件,指令等。 每个模块都使用@NgModule装饰器定义。

Root Module和Feature Module的区别。

每个Angular应用程序只能有一个根模块(Root Module),而它可以有一个或多个功能模块(Feature Module)。根模块导入BrowserModule,而功能模块导入CommonModule。

Module 延迟加载(Lazy-loading)

当一个项目做得很大后,为了提高首屏加载速度,可以通过Lazy-loading,当访问到某些具体的url时,才加载那些不常用的feature module。

实现:正常创建feature module,修改路由配置。 例如:

const routes: Routes = [  {    path: 'customers',    loadChildren: () => import('./customers/customers.module').then(m => m.CustomersModule)  }];

这样,编译后,这个feature module就会是一个独立的js,只有当用户访问url(~/customers)时,才会向server端请求这个独立的js,然后加载、执行。

参考https://angular.io/guide/lazy-loading-ngmodules

什么是指令(Directive)

指令(Directive)用于添加行为到已有元素(DOM)或者组件(Component)。
同时,一个元素或组件,可以应用多个指令。

Promise 和 Observable的区别

首先新版本的anuglar是推荐使用Observable的(属于RxJS),其次,对于Observable对象,可以使用.toPromise()转化为Promise对象。

  • Promise,无论是否调用then。promise都会立即执行;而observables只是被创建,当调用(subscribe)的时候才会被执行。

  • Promise返回一个值;Observable返回0至N个值。所以Promise对应的操作符是.then(),Observable对应的是.subscribe

  • Observable,还额外支持map,filter,reduce和相似的操作符

  • Observable 可以取消,Promise不可以

如果提高Angular的性能

Angular也还是网页应用,所以一般的提高网页西能的技巧都是通用的。针对Angular,还有一些特殊的优化技巧:

  • AOT编译。之前提到过不要在客户端编译

  • 应用程序已经最小化(uglify和tree shaking)

  • 去掉不必要的import语句。如果有遗留,那么打包时也会打进来。

  • 确保应用中已经移除了不使用的第三方库。同上。

  • 项目较大时,考虑延迟载入(Lazy Loading), 保证首页的加载速度。

Angular 版本如何升级

Angular CLI提供了升级命令(ng update),同时,官网(https://update.angular.io/)也有升级指南。选择从哪个版本升级到哪个版本后,会给出一步一步的升级命令,直接执行就好。

感谢各位的阅读!关于"Angular8基础知识点有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

应用 编译 组件 程序 应用程序 检测 变化 数据 模块 方式 浏览器 检查 浏览 指令 升级 双向 性能 版本 元素 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 互联网科技行业发展 互联网金融监管科技数据 A股互联网金融科技公司 善班互联网科技 杭州互联网科技公司 互联网科技的未来发展 互联网科技汛 成都狮子座互联网科技 互联网科技公司做什么 老年人脱离互联网科技的作文 互联网在线教育科技创业 35岁以上互联网科技行业 山东大美朱楼互联网科技有限公司 世界互联网科技成果奖 互联网科技手机排行榜 互联网金融运营模式中的金融科技 求路客互联网科技电话 河南商务圈互联网科技有限公司 株洲百竞科技的互联网营销顾问 科技赋能下的互联网金融 镁科技互联网资讯平台 互联网大会黑科技排名 玉溪新华互联网科技好不好 烟台灵鸽互联网科技有限公司 互联网营销推广黑科技 半导体是互联网高科技吗 互联网科技对化妆品行业 安徽九吞吴互联网科技有限公司 中国主要互联网科技公司
0