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】
最后更新: 2018年11月09日 23:40
原始链接: https://www.github.com/ChangHub/BlogImages/raw/master/2018/11/01/Angular2/