angular简介和其特点介绍


Posted in Javascript onJanuary 29, 2015

以前开发(web或者移动端)前端主要使用jQuery+原生js,如果使用某些前端UI框架的话,它自己还可能提供一些API可以使用。而且目前很多UI框架都是基于jQuery的,所以说一下由jQuery跨到angularjs跨度较大,研究了一段时间的angularjs ,下面从整体上说说感受吧:

关于和jquery的比较

首先angular是一个mvc框架,它与jquery不同之处在于,前者致力于mvc代码解耦,采用model,controller以及view方式去组织代码,而后者提供给你了很多APi函数,你可以不用写很多原生js去实现比较复杂的效果,比如说动画,$.animate,这样的效果如果需要原生js来写的话,代码量将会比较庞大;

其次,jQuery没有定义你的代码如何组织,你可以将它放在一个单独的js文件中进行引用,也可以直接写在页面中采用script标签进行包裹,甚至可以直接以内联的方式写在html标签中,但是angularjs会将一个HTML页面分成若干个模块,每个模块都可以自己的scope,service以及directive,各个模块之间也可以进行通信,但是整体上结构是比较清晰的,就是说其代码组织方式是模块化的。

最后,jQuery的思想是先设计好页面,然后在已有页面的基础上进行dom操作后展示页面,但是angular的view可能仅仅是一个框架,对view的dom操作或者时间监听都是在directive中实现的,而且一般情况下很少自己直接去写Dom操作代码,只要你监听model。model发生变化后view也会发生变化。

关于适用场合

jQuery应该适用于大多数web开发,移动端也有(jQuerymobile),angularjs有人说更适合做SPA(我个人认为在手机上的SPA可能会引发性能上的问题,因为它的脏检查机制会影响性能),在web端,一些CRUD的应用或者管理类软件还是可以使用的(当然这里的理解可能不一定准确,会随着深入学习更多去了解和使用)。

关于UI的结合

开发任何产品都需要用到前端UI,目前很多UI是基于jQuery的,这意味着你如果要用angularjs和这些Ui组件的话,需要用angularjs的directive去重写些组件,这一过程是比较麻烦的,所幸的是,angular给我们提供了一些UI组件可以使用(web端主要是结合bootstrap前端组件),http://angular-ui.github.io/,而在移动端主要是结合ionic框架http://ionicframework.com/,但是随着angular的发展,很多HTML5的前端框架也慢慢集成了angularjs版本可供使用。

关于angularjs的特点

1.数据的双向绑定:这可能是其最激动人心的特性吧,view层的数据和model层的数据是双向绑定的,其中之一发生更改,另一方会随之变化,这不用你写任何代码!(想想jQuery方式下怎么做吧)

2.代码模块化,每个模块的代码独立拥有自己的作用域,model,controller等。

3.强大的directive可以将很多功能封装成HTML的tag,属性或者注释等,这大大美化了HTML的结构,增强了可阅读性;

4.依赖注入,将这种后端语言的设计模式赋予前端代码,这意味着前端的代码可以提高重用性和灵活性,未来的模式可能将大量操作放在客户端,服务端只提供数据来源和其他客户端无法完成的操作;

5.测试驱动开发,angularjs一开始就以此为目标,使用angular开发的应用可以很容易地进行单元测试和端对端测试,这解决了传统的js代码难以测试和维护的缺陷

以上就是研究angularjs一段时间得出的结论,其中某些地方可能有所疏漏,没关系,接下来会展开其中某一点一步步去学习。

Javascript 相关文章推荐
jQuery中RadioButtonList的功能及用法实例介绍
Aug 23 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
Dec 17 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
Oct 29 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
React styled-components设置组件属性的方法
Aug 07 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 #Javascript
浅谈javascript中自定义模版
Jan 29 #Javascript
jQuery和AngularJS的区别浅析
Jan 29 #Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 #Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 #Javascript
使用Sticker.js实现贴纸效果
Jan 28 #Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 #Javascript
You might like
如何使用脚本模仿登陆过程
2006/11/22 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
javascript新手语法小结
2008/06/15 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
自学python用什么系统好
2020/06/23 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
园艺师求职信
2014/03/10 职场文书
公司聘任书模板
2014/03/29 职场文书
植树节活动总结
2014/04/30 职场文书
企业读书活动总结
2014/06/30 职场文书
财务检查整改报告
2014/11/06 职场文书
银行竞聘报告范文
2014/11/06 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
新闻稿件写作范文
2015/07/18 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Python进程间的通信之语法学习
2022/04/11 Python