Angularjs为什么在JS框架中排名第一
很多人感觉jquery 比 Angularjs 火太多啦,Angularjs怎么会是排名第一
首先说明一下,Angularjs 是JS的一个框架,而jquery 是一个JS库
jquery 就像一个工具箱,为我们提供了非常丰富好用的工具,我们想怎么用就怎么用,jquery只负责让我们更便利,不关心我们的工作方式和流程
Angularjs 则定义了一套工作规范,只能按照他的规则来工作,Angularjs是依靠高效的工作规范来提高我们的开发效率的
Angularjs的显著优势
数据双向绑定
举一个angular最简单的例子
<body ng-app>
<span>Insert your name:</span>
<input type="text" ng-model="user.name" />
<h3>{{user.name}}</h3>
</body>
执行后,在 input 中输入的内容会立即在 h3 中显示出来,input 和 h3 的内容完全同步
这就是数据的双向绑定,大概思路:
ng-model 指令在作用域中添加了一个名为 user.name 的数据模型,input 的值一变,数据模型也跟着改变{{user.name}} 是Angularjs的模板语言,用来显示名为user.name的数据模型的值,当数据模型的值改变时,会通知{{user.name}}进行改变
这样,通过隐藏的数据模型就实现了数据的双向绑定
如果没有Angularjs定义的这个规则,通过jquery来实现的话还是稍显复杂的
强大的内置指令
指令为html引入了新的语法,使html更强大
Angularjs内置了很多强大的指令,例如 repeat循环指令
<body ng-app="app" ng-controller="MainCtrl">
<ul>
<li ng-repeat="person in developers">
{{person.name}} from {{person.country}}
</li>
</ul>
</body>
ng-repeat 指令非常简单的实现了 li 的循环处理
如果使用jquery实现,可能要引入模板插件,编写li循环模板代码,然后调用模板处理数据,从代码复杂度和代码可读性上看,Angularjs的指令都更加有优势
可自定义扩展指令
内置指令毕竟有限,Angularjs允许我们自定义指令,例如
app.directive('hello', function() {
return {
restrict: "E",
replace: true,
template: "<div>Hello readers</div>"
}
});
这里简单定义了一个名为 'hello' 的标签,在html中就可以直接使用了 <hello></hello>
再看个例子,我们通过jquery的插件显示饼图
在html中定义一个容器节点
<div id="chart"></div>
在JS中调用饼图插件
$('#chart').pieChart({ ... });
在这里,如果不去看js代码,只看html很难理解这个节点的含义
如果使用指令,就会清晰很多
<pie-chart width="400" height="400" data="data"></pie-chart>
通过上面的几个例子,看到了Angularjs的一些优势,Angularjs的设计的确很优秀,例如通过模板和控制器使代码和逻辑层次分明,还引入了依赖注入、服务等后端框架常用的概念,对表单验证和单元测试也有非常好的支持,Angularjs还是非常值得学习的
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- iBatis.Net(2):基本概念与配置
- ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析
- 解决Entity Framework查询匿名对象后的跨域访问的一种方式
- WebSocket在ASP.NET MVC4中的简单实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法