ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-23 16:56:55  阅读:166  来源: 互联网

标签:jquery name 框架 html JS 指令 Angularjs 数据模型


很多人感觉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还是非常值得学习的


标签:jquery,name,框架,html,JS,指令,Angularjs,数据模型
来源: https://blog.51cto.com/u_15127579/2727296

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有