angular有哪些优缺点?

您所在的位置:网站首页 angular的优势 angular有哪些优缺点?

angular有哪些优缺点?

#angular有哪些优缺点?| 来源: 网络整理| 查看: 265

这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【angular有哪些优缺点? 】

【JS-10】angular有哪些优缺点?

 

大家好,我是IT修真院深圳分院第12期的学员韩鹏,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网JS任务10,深度思考中的知识点——angular有哪些优缺点?

 

1.背景介绍AngularJS是一款为了克服HTML在构建应用上的不足而设计的优秀的前端JS框架。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

AngularJS 是一个 JavaScript 框架。它是一个以 JavaScript 编写的库。它可通过 script 标签添加到 HTML 页面。

AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。

AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。

 

2.知识剖析设计模式:MVC 与 MVVM

MVC设计模式:M - Model  数据:数据实体,用来保存页面要展示的数据;V - View   视图:负责显示数据的,一般其实就是指的html页面;C - Controller 控制器: 控制整个业务逻辑,负责处理数据,比如数据的获取,以及数据的过滤,进而影响数据在视图上的展示.

MVVM设计模式:M - Model 数据:它是与应用程序的业务逻辑相关的数据的封装载体;V - View 视图:它专注于界面的显示和渲染;VM - ViewModel 视图-数据:它是View和Model的粘合体,负责View和Model的交互和协作.

ng的设计思想采用了MVC的基本思想,又不完全是MVC。 MVC的界面和逻辑关联紧密,数据直接从数据库读取。MVVM的界面与viewmodel是松耦合,界面数据从viewmodel中获取。所以angularjs更倾向于mvvm。

MVVM的优点:低耦合:View可以独立于Model变化和修改,同一个ViewModel可以被多个View复用;并且可以做到View和Model的变化互不影响;可重用性:可以把一些视图的逻辑放在ViewModel,让多个View复用;独立开发:开发人员可以专注与业务逻辑和数据的开发;ViewModemvvm设计人员可以专注于UI(View)的设计;可测试性:清晰的View分层,使得针对表现层业务逻辑的测试更容易,更简单。

AngularJS 的特点:

模块化:            一个应用是由若干个模块(module)组成的,每个模块实现一个功能。利于代码的复用。一切都是从模块开始的,我们在使用angularJS时,一定要先想到模块,所有的东西都是建立在模块的基础上,只有定义了模块才能调用其它方法。

双向绑定:数据绑定:数据从一个地方A转移(传递)到另一个地方B, 而且这个操作由框架来完成。单向数据绑定:只支持一个方向的数据流向。View——>Model:  ng-init 初始化的效果Model——>View  :{{name}}表达的效果双向数据绑定:同时支持两个方向的数据流向ViewModel: ng-model的功能

依赖注入:        依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是,它允许客户端了解客户端如何使用该系统找到依赖。AngularJS 提供很好的依赖注入机制。以下5个核心组件用来作为依赖注入: value、factory、service、provider、constant

指令系统:可以自定义标签名,然后写封装他们标签名;除了可以封装自定义标签,还可以做其他的功能。

常用的自带指令有:ng-app、ng-model、ng-bind、ng-init等。

自定义指令:通过directive创建自定义指令,可以在HTML页使用个性化标签。

 

3.常见问题AngularJS 的优缺点是什么?

 

4.解决方案AngularJS的优点:

模板功能强大丰富,自带了极其丰富的angular指令。是一个比较完善的前端框架,包含服务,模板,数据双向绑定,模块化,路由,过滤器,依赖注入等所有功能;自定义指令,自定义指令后可以在项目中多次使用。ng模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助。angularjs是互联网巨人谷歌开发,这也意味着他有一个坚实的基础和社区支持。

AngularJS的缺点:

angular 入门很容易 但深入后概念很多, 学习中较难理解.文档例子非常少, 官方的文档基本只写了api, 一个例子都没有, 很多时候具体怎么用都是google、baidu来的.对IE6/7 兼容不算特别好, 就是可以用jQuery自己手写代码解决一些.指令的应用的最佳实践教程少, angular其实很灵活, 如果不看一些作者的使用原则,很容易写出四不像的代码, 例如js中还是像jQuery的思想有很多dom操作.DI 依赖注入 如果代码压缩需要显示声明.

 

5.代码实战 

6.拓展思考与Vue、React的对比Vue:Vue.js只聚焦视图层,是一个构建数据驱动的Web界面的库。Vue.js通过简单的API(应用程序编程接口)提供高效的数据绑定和灵活的组件系统。

特性:

1.轻量级的框架

2.双向数据绑定

3.指令

4.插件化

优点:

简单:官方文档很清晰,比 Angular 简单易学。快速:异步批处理方式更新 DOM。组合:用解耦的、可复用的组件组合你的应用程序。紧凑:~18kb min+gzip,且无依赖。强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。

缺点:

新生儿:Vue.js是一个新的项目,没有angular那么成熟。影响度不是很大:google了一下,有关于Vue.js多样性或者说丰富性少于其他一些有名的库。不支持IE8。

React:React主要用于构建UI。你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTML DOM元素、也可以传递动态变量、甚至是可交互的应用组件。

特性:

1.声明式设计:React采用声明范式,可以轻松描述应用。 2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。 3.灵活:React可以与已知的库或框架很好地配合。

优点:

速度快:在UI渲染过程中,React通过在虚拟DOM中的微操作来实现对实际DOM的局部更新。跨浏览器兼容:虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都是没问题的。模块化:为你程序编写独立的模块化UI组件,这样当某个或某些组件出现问题是,可以方便地进行隔离。单向数据流:Flux是一个用于在JavaScript应用中创建单向数据层的架构,它随着React视图库的开发而被Facebook概念化。同构、纯粹的javascript:因为搜索引擎的爬虫程序依赖的是服务端响应而不是JavaScript的执行,预渲染你的应用有助于搜索引擎优化。兼容性好:比如使用RequireJS来加载和打包,而Browserify和Webpack适用于构建大型应用。它们使得那些艰难的任务不再让人望而生畏。

缺点:

1.React本身只是一个V而已,并不是一个完整的框架,所以如果是大型项目想要一套完整的框架的话,基本都需要加上ReactRouter和Flux才能写大型应用。

 

7.参考文献参考一:angularJS的核心特性

参考二:AngularJS 应用模块化的使用

参考三:AngularJS-模块化

参考四:AngularJS 依赖注入

 

8.更多讨论Q1:Vue和React共同点

A:vue,react 共性: 

虚拟dom实现快速渲染 

轻量级响应式组件 

服务端渲染易于集成路由工具,打包工具及状态管理工具

 

Q2:SPA vs. MPA

A:从字面上理解,SPA(单页面应用程序)整个应用只有一个页面,只加载一次Web静态资源,包括HTML+CSS+javascript,在导航过程中不需要重新加载渲染整个页面。而MPA恰恰相反,也就是每个页面都需要独立完整的从后端加载和渲染,早期的网站大多属于MPA。

 

Q3:可以说说双向绑定应用场景嘛?

A:最简单的应用场景是在用户提交表单信息后,实时的反应在视图上。比如我输入某某的名字,页面上直接显示欢迎某某。更多的应用场景,说到底也是给与用户实时反馈,增强用户体验。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3