`

论angular的“强大”之处

阅读更多

最近看知乎,好有多讨论ng的,有观望准备学习的,也有使用中传播经验的。

 

我们公司算是大范围用(金融类核心系统,ng的业务相关的代码量在百万级别),ng的经验算是积累了些,写这篇blog发表下我的一些看法。

 

1. 如题目说angular是强大的,这里是有应用场景做背景的,双向绑定很多框架都能做,但

scope的设计 + 容器思想 + 双向绑定这些特性组合起来,更适合复杂的web开发场景:组件化,解耦。

 

2. angular官方介绍的首先提出的是增强的html语法,组件化技术也有很多,和服务端驱动相比,处理视图部分ng的理念应该是标记语言+ 声明式更适合UI,简单很重要。做一样的功能,抽象UI对象,用命令过程式编程驱动开发,比起html/css不够简单,灵活。(这方面很多流派,前端、后端的很多,这里是表达个人看法)

 

3. 扩展、灵活性很高,但方式约束性强

  a) 和第三方库的兼容使用上,虽然有个the angular way,但不妨碍和一些成熟的库结合,如地图、编辑器,图表

  b) compile link的api足够应付各种复杂、灵活的需求(动态的模板,动态的模型)

  c) the angular way还是约束很多的,这样也有利于大家保持一致的编码风格,这个对于大点的项目来说很重要

 

4. 强大可扩展的校验机制——围绕ngModelController/ngForm构建的绑定拦截和校验机制,真是太灵活了

 这些设计做业务系统把模型和校验分离得很清楚啊

$parsers/$formatters

$setViewVal

$errors/$invalid/$valid

$pristine/$dirty

 

当然也有吐槽的地方,比如:

1. ng-options生成的option没有title,要自己加指令做dom操作

2. ng-options性能差啊,我们重写了用html拼接实现的简化版,借鉴了dom重用思路

3. bootstrap不支持嵌套dom,我们都是先把模板放在body下的平级,隐藏,编译后,然后做dom操作形成父子结构

4. 为什么有上面一条,是因为angular不支持“热插拔”,bootstrap之前,必须所有的directive/controller/filter/service都到位的,但不是所有的应用都是SPA,一个应用的js/html的定义有延迟加载的情况

5. ng-repeat性能差啊,bindonce只能一定程度上缓解,很多时候我们用html字符串模板 + 事件代理方式处理,包装成双向绑定形式给开发者用

6. 有时候还需要用同步ajax的

 

 

 

 

 

分享到:
评论

相关推荐

    angular之interceptors拦截器

    angular之interceptors拦截器

    Switching to Angular 2

    Key Features, Get up to date with the latest changes to Angular 2, including the improvements to directives, change detection, dependency injection, router, and moreUnderstand Angular 2's new ...

    angular-1.3.14.zip

    从官网angularjs org扒下来的 包含angular js angular min js angular min js map angular route js angular route min js之类等等 AngularJS是为了克服HTML在构建应用上的不足而设计的 它通过新的属性和表达式...

    Learn Angular The Collection

    Learn Angular: The Collection By 作者: David Aden Pub Date: 2018 ISBN: n/a Pages: 657 Language: English This book is for all front-end developers who want to become proficient with Angular and its ...

    Angular-angular2-mdl.zip

    Angular-angular2-mdl.zip,基于Material Design Lite的Angular 2、4、5、6、7、8组件、指令和样式(NPM:@Angular MDL/Core)基于Material Design Lite的Angular 8组件、指令和样式https://getmdl.io(v:1.3.0)。...

    angular6 中文官方文档

    Angular 本身使用 TypeScript 写成 的。它将核心功能和可选功能作为一组 TypeScript 库进行实现,你可以把它们导入你的应用中。 Angular 的基本构造块是 NgModule,它为组件提供了编译的上下文环境。 NgModule 会把...

    angular-1.6.9

    angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9angular-1.6.9...

    angular2.pdf

    angular2文档,We developed this book to be used as course material for Rangle's Angular 2 training, but many people have found it to be useful for learning Angular 2 on their own. This book will cover...

    angular-1.3.5.zip

    从官网angularjs org扒下来的 包含angular js angular min js angular min js map angular route js angular route min js之类等等 AngularJS是为了克服HTML在构建应用上的不足而设计的 它通过新的属性和表达式...

    Angular-angular.zip

    Angular-angular.zip,角度的ui路由器:角度的基于状态的路由(v2 );角度的ui路由器;,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面...

    Angular-angular-electron-dream-starter.zip

    Angular-angular-electron-dream-starter.zip,Angular Electron初学者工具包,包括Webpack、Angular 4(路由器、HTTP、表单、服务、NGRX、测试、E2E、覆盖范围)、Karma、Spectron、Jasmine、伊斯坦布尔,以及带有...

    angular4的框架

    基于angular4的系统框架,包括angular2,以及各个组件,模块

    Essential Angular

    Essential Angular by Victor Savkin English | 31 May 2017 | ASIN: B0716BBX9P | 108 Pages | AZW3 | 1.07 MB Key Features Written by two Angular core contributors A complete overview of the key aspects ...

    angular学习

    angular学习angular学习angular学习angular学习angular学习angular学习

    angular2项目源码

    angular2.0.1英雄之旅案例源码。简单易懂。适合称呼学者

    Angular 2 By Example

    Angular 2 By Example by Chandermani Arora English | 4 Nov. 2016 | ISBN: 178588719X | 458 Pages | MOBI/EPUB/PDF | 12.97 MB Angular 2 will help you build faster, more efficient, and more flexible cross...

    Angular17之Angular自定义指令详解

    主要介绍了Angular17之 Angular自定义指令的相关知识 ,需要的朋友可以参考下

    Angular-angular-wasm.zip

    Angular-angular-wasm.zip,Angular 2 使用WebAssemblyAngular和WebAssembly的服务和指令,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面...

    angular-1.0.8.zip

    从官网angularjs org扒下来的 包含angular js angular min js angular min js map angular route js angular route min js之类等等 AngularJS是为了克服HTML在构建应用上的不足而设计的 它通过新的属性和表达式...

Global site tag (gtag.js) - Google Analytics