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插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
canvas绘制七巧板
Feb 03 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
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
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
PHP输出日历表代码实例
2015/03/27 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
前端微信支付js代码
2016/07/25 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
浅谈对yield的初步理解
2017/05/29 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
酒店公关部经理岗位职责
2013/11/24 职场文书
高一英语教学反思
2014/01/22 职场文书
师德学习感言
2014/01/31 职场文书
python处理json数据文件
2022/04/11 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android