Angularjs为什么在JS框架中排名第一

2018-04-02 17:31:18 浏览数 (1)

很多人感觉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循环指令

代码语言:javascript复制
<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允许我们自定义指令,例如

代码语言:javascript复制
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还是非常值得学习的

0 人点赞