Angular是一个用HTML和TypeScript构建客户端应用的平台和框架。可以帮助你创建Web、移动端或者桌面应用程序。Angular是Angular2,Angualr4和AngularJS之后所有其他版本的总称。基于TypeScript,是对AngularJS的完全重写。

AngularJS与Angular

架构

AngularJS的架构是基于MVC设计,视图输出模型信息,控制器接受输入,转换成命令,发送命令给模型和视图。

Angular,控制器和$scope被组件和指令取代,组件是带有模板的指令,它们处理页面上的逻辑。

语言

AngularJS是用JavaScript编写的。

Angular是用TypeScript语言,具有强大的类型检查和面向对象功能。

语法

AngularJS绑定属性或者事件,需要记住正确的ng指令。

Angular事件绑定用“()”,属性绑定用“[]”。

移动支持

AngularJS并未考虑到移动支持,Angular具有移动支持。

路由

AngularJS使用$routeprovider.when()配置路由。

Angular使用@RouteConfig{(...)}配置路由。

性能

AngularJS最初是为设计师而非开发人员开发的,不足以满足开发人员的要求,通过双向绑定减少了开发时间,但是在客户端创建更多处理,页面加载需要相当长时间。Angular提供更好的结构,更轻松的创建和维护大型应用程序,以及更好的检测机制。

![1][Angualr-version.jpg]

结构【Architecture】

Angular是一个用HTML和TypeScript构建客户端应用的平台和框架。本事是使用TypeScript写成,其核心功能和可选功能是作为一组TypeScript库进行实现,可以直接导入你的应用中。

Angular基本的构造块是NgModule,它为组件提供了编译的上下文环境。它会把相关的代码收集成一个功能集。Angular应用就是一组NgModule定义出来的。应用至少有一个用于引导应用的根模块(root module),通常会有很多特性模块(feature module)

组件定义视图,视图是一组可见的屏幕元素,Angular可以根据程序逻辑和数据来选择和修改它们,每个应用至少一个根组件。

组件使用服务,服务提供和视图不直接相关的功能,服务作为依赖被注入到组件中,是代码模块化,可复用。

组件【Component】

每个Angular应用都至少一个组件,也就是根组件,它把组件树和页面DOM连接起来。每个组件都会定义一个类,其中包含应用的数据和逻辑,并与一个HTML模板关联,模板定义了目标环境下显示的视图。

@Component()提供模板和组件专属的元数据。

  • selector

    CSS选择器,一旦模块中找到对应的标签,就创建并插入该组件的视图

  • templateUrl

    该组件的HTML模块文件地址

  • styleUrls

    组件HTML模块文件对应的样式表

  • providers

    只为本组件提供的服务

模板【Templates】

简言之,带有Angular属性的HTML。

由于script有脚本注入的风险,被禁用。

模块【NgModules】

Angular应用是模块化的,它拥有自己的模块系统,成为NgModule。一个NgModule就是一个容器,用于存放一些内聚的代码块,这些代码是一组紧密相关的功能。

每个Angular应用都至少一个NgModule类,也就是根模块,习惯上命名AppModule,位于app.module.ts文件中,引导整个根模块可以启动应用。

@NgModule()描述模块的元数据。

  • declarations

    声明对象,包含组件(components)、指令(directives)、管道(pipes)等。

  • exports

    其他模块的组件可以使用的模块

  • imports

    本模块需要使用的其他模块

  • providers

    向全局提供的服务,可以供NgModule中所有组件使用

  • bootstrap

    应用的主视图,称为根视图,它是应用中所有其他视图的宿主,只有根模块才有这个属性。

Service【DI】

Angular把组件和服务区分开来,提高模块性和复用性。组件包含于视图有关的功能,其他功能则有服务提供。

组件的工作管理用户体验,提供数据绑定的属性和方法,以便视图渲染。

服务的工作获取数据,验证输入,写日志等共性操作,可以通过依赖注入,到不同的组件中使用。

任何服务,至少注册一个提供者(provider),服务可以在元数据中注册自己为提供者,这样可以让自己随处可用。

@Injectable()提供了服务的元数据。

  • providedIn :’root’

    将服务注册到根中,在根一级提供服务,Angular会为服务创建一个单一的共享实例,可以注入到任何组件中。

服务提供者:组件级@Component中,模块级@NgModule中

HttpClient

大多数前端应用都需要通过HTTP协议与后端服务通讯。现代浏览器支持两种不同的API发起HTTP请求,XMLHttpRequest接口和fetch()API。

@angualr/common/http中的HttpClient类为Angular应用程序提供一个简化的API来实现HTTP客户端功能,它基于浏览器提供的XMLHttpRequest接口。

1
import { HttpClient } from '@angular/common/http';

路由【Routing】

Angular的路由器是一个可选的服务,它用来呈现指定的URL所对应的视图,其功能位于@angular/router包中。

1
import { RouterModule, Routes } from '@angular/router';

动画【Animations】

× 请我吃糖~
打赏二维码