AngularJS 是一个为动态WEB应用设计的纯前端的开发框架。它使用HTML作为模板语言,用 js处理业务逻辑。它组织良好,经过严格测试,多功能,强大并且十分灵活。你仍然需要具有服务端后台,但大多数的用户交互逻辑将优雅地放到客户端上处理。
【端对端的解决方案】
AngularJS不是一个简单的框架,它试图成为WEB应用中的一种端对端的解决方案。这意味着它不只是你的WEB应用中的一个小部分,而是一个完整的端对端的解决方案。
它包含了构建一个完整应用的全部内容:从开发(数据绑定、基本模板标识符、表单验证、路由、深度链接、组件重用、依赖注入)到测试(单元测试、端对端测试、模拟和自动化测试框架)。
【核心概念】
AngularJS是为了克服HTML和JS在构建应用上的不足,更好地构建应用和更方便地测试而设计的。它做了很多工作,为开发者呈现一个更高层次的抽象来最大程度简化应用开发。
通过将web应用开发过程中重复的,繁琐的、低级的开发操作(DOM操作,事件监听、数据采集、输入验证)封装起来提供给开发者,通过设计良好的框架和规范在整个开发流程中引导开发过程,规范文档和代码结构,最大程度弥补web应用程序开发过程的缺陷。
这些工作给我们带来了很多精巧的技术和概念:
▲SPA
单页应用。Angularjs正真意义上的页面只有个(整个应用中只有一个html标签和body标签),变化的只是模板和数据。
▲MVC
数据、业务逻辑、视图的分层模型,将视图逻辑,业务逻辑,数据逻辑的充分解耦。
▲模块
定义了一个应用程序,模块是应用程序中不同部分的容器,模块是所有组件的容器,组件通常属于一个模块。AngularJS应用没有主方法,而是使用模块来声明应用应该如何启动。Angualrjs使用模块来简化依赖引入并进一步优化代码结构。
▲双向数据绑定
将业务数据自动写入DOM组件用于显示,将DOM组件的用户输入自动写入业务数据模型。
▲语义化标签(指令)
自定义HTML标签,标签可以是元素,也可以是属性。这些标签可以用作新的自定义的控件;也可以用来"渲染"有一定行为的元素,也可以以一些有趣的方式来操作DOM属性。一个指令就是一个能引入新语法的东西,极大的增强了HTML表达能力。 更抽象的说,Angualrjs构建了一个完全基于js实现的可扩展的HTML编译器,指令就是用来给编译器传递数据进而传递指定的功能和样式到DOM元素。
▲依赖注入
使用名称声明方式将依赖的模块或服务注入当前服务中,实现了业务代码和配置实现的解耦。
▲模板
HTML代码、指令和页面逻辑的集合体,它不关心数据内容,不关心业务逻辑,它只根据注入的数据呈现对应的内容,是视图的高度抽象。
【开发理念和优势】
Angularjs开发理念是,当组建视图(UI)又要编写控制逻辑时,声明式代码比命令式代码要好得多,简洁得多。
将DOM和应用逻辑完全解耦,MVC和依赖注入保持关注点分离。(视图负责展现将要发生的事情;模型表现数据;有一个service层来实现可复用的任务;在 directive里面进行DOM操作和扩展;使用controller来面的东西粘合起来)。代码结构清晰,API简练抽象,可复用性更强,便于维护并且大大改善了代码的可调性(调试的难度很大程度上取决于代码结构)。
将客户端和服务端解耦,除了AJAX接口外,相互之间没有联系,两边可以并行开发,并且使两边代码都可以实现复用。
将UI设计和业务开发解耦,UI设计者只需要了解数据性质和结构就可以设计界面展示。开发人员也无需关心页面DOM是什么。二者可以并行开发,最后通过模板和数据绑定连接起来。
将测试和开发完全同等看待,完全基于可测试根基设计,可以很好地支持自动化单元测试和集成测试。API文档本身就是详细的测试覆盖说明。
大幅度降低开发门槛,屏蔽了大量的底层操作,使得开发者无需了解底层DOM的接口,只需掌握Angualrjs和基本的HTML与JS就可迅速上手。
AngularJS能将你从以下的噩梦中解脱出来:
▲使用回调:回调的使用会打乱代码的可读性,让代码变得支离破碎,很难看清本来的业务逻辑。大幅度地减少因为JavaScript这门语言的设计而不得不写的代码,能让应用的逻辑看得更清楚。
▲手动编写操作DOM元素的代码:操作DOM是AJAX应用很基础的一部分,但它也总是很“笨重”并且容易出错。用声明的方式描述的UI界面可随着应用状态的改变而变化,能让从编写低级的DOM操作代码中解脱出来。绝大部分用AngularJS写的应用里,开发者都不用再自己去写操作DOM的代码。
▲对UI界面读写数据:AJAX应用很大一部是CRUD操作。
一个经典的流程是把服务端的数据组建成内部对象,再把对象编成HTML表单,用户修改表单后再验证表单,如果有错再显示错误,然后将数据重新组建成内部对象,再返回给服务器。这个流程里很多要重复写的代码,使得代码看起来总是在描述应用的全部执行流程,而不是具体的业务逻辑和业务细节。Angularjs用双向绑定把你从上述的过程中完全解放,数据的显示和获取几乎无需代码就可完成。
恒生技术之眼原创文章,未经授权禁止转载。详情见(点击)转载须知 。
友情链接
联系我们
恒生技术之眼
站长统计