AngularJs在近几年一致如火如荼,久经沙场而常胜不衰。如果某位同学还没有接触过Angular,那你很可能会错过阐释“Javascript时世界上最灵活的语言”的又一个深刻的例子了。说了这么多,您有没有对Angular产生了一丝兴趣呢?(本人前端新手一枚,由于最近刚开始写博客,想到哪就写到哪,逻辑可能不是按常规的来,请各位看官见谅。!第一次接触angualr,如果不能理解或者不能赞同的,可跳过此篇直接进入下一篇内容篇。而且后面的博客都是基于angular1.0版本的描述。)

那么,Angualr到底有什么魅力或者说区别去其他市面上框架的的地方呢?

angularJs是一个为动态web应用设计的框架,他能让你你用HTML作为模版语言,通过拓展html的语法,能更清楚的让你构建你的应用组件。他的创新点在于数据绑定和依赖注入,它是你不在写大量的代码了。这些全都是通过浏览器端的实现。angularJs是为了客服html在构建应用上的不足而实现的,HTML作为一门很好的静态文本展示设计的申明式语言,但要构建web应用的话,就显得乏力了,所以我们需要做一些事情来让浏览器实现我们想要的。通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足:

类库:他是一些函数的集合,如jquery,它能帮你写web应用,其主导作用的还是你的代码,由你来决定何时使用类库:

框架:一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。例如backbone.js,ember.js等等。

AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法。例如:

  1.使用双大括号{{}}语法进行数据绑定;

  2.使用DOM控制结构来实现迭代或者隐藏DOM片段;

  3.支持表单和表单的验证;

  4.能将逻辑代码关联到相关的DOM元素上;

  5.能将HTML分组成可重用的组件。

在我个人使用angular的过程中,给我印象最深刻的当属angular的申明式语法!angualr使用HTML申明式语法定义交互接口(app's user interface).HTML在编写静态页面时,有很多申明式呃结构来控制格式,比如,你要把某个内容居中,你不必告诉浏览器“去找到窗口的中点位置,然后跟内容的中间结合”。你只需要添加一个 align="center" 的属性给需要内容居中的元素就行了。这就是声明式语言的强大之处。但是声明式语言也有力所不能及的地方,原因之一在于你不能用它来让浏览器识别新的语法。比如说,你不要内容居中,而是居左到1/3,这时它就做不到了。所以我们需要一个办法让浏览器能学会新的HTML语法。ngularJS的HTML编译器能让浏览器识别新的HTML语法。它能让你将行为关联到HTML元素或者属性上,甚至能让你创造具有自定义行为的新元素。AngularJS称这种行为扩展为“指令”。

注意:编译的过程都会在浏览器端发生;服务器端不会参与到其中的任何步骤,也不会做预编译。

给我印象深刻第二个就是它的数据模型(Data Models)。Angular的数据模型其实还是一个普通的javascript对象,也就是说创建一个angualr data model ,并不需要额外的构造函数Constructor(继承javascript中的Object()函数就行)。也就是说,你可以随意去添加或者改变或者循环model的属性,这样你的代码会看起来和原始javascript写法逻辑一致。区别于其他的是data models,Angular数据模型更接近controller和view这两个层。为了区别于其他的数据模型,Angular称之为scopes。而scopes本身是没有初始化任何数据的,只有通过在controler中在逻辑需求中填充数据。只要在angular中controller中控制的scope中的数据,会自动绑定到view中。

第三个,就是Angular极具特色的directives。想象一下,当HTML中拥有海量丰富元素,例如<generation></generation>,<grid></grid>。这样我们就不用去操作DOM来把它伪装成类似<generation></generation>,<grid></grid>功能的标签。当定义了这些属性或者元素后,就可以直接讲这些属性赋值给html标签,或者把元素直接当成标签应用。那么Angualr是如何定义这些标签或者元素的呢?通过把DOM操作这部分代码放在directives中,我们可以把它从MVC中分离。这样,我们MVC框架就只关心是否跟新视图中的新数据。

第四个,就是controllers,它所作的唯一工作就是操作scope。这里面主要是一些处理业务逻辑的代码。既然controller如此简单,那么所有的很复杂的逻辑代码写在哪里呢?当然就是services,顾名思义。services不会被app所载入,但是简单的提供了一些对外的接口,那些你想暴露的接口。大部分时间它会同步服务端来维护离线数据存储和暴露一些方法来推送数据到后端,或者也可以用来

创建一个共享服务资源,可以允许多个控制器来分享这些资源。

先写到这里吧。晚上继续更。

---------我是萌萌嗒分割线。。。

以上是Angular给我影响比较深刻的几个概念。其实还有很多其他的,为了更好的阐述angular各个模块的用法,先不向大家介绍这些概念了啊,后面会一个个和大家剖析每个模块的用处。最后会做一个综合性总结。

转载于:https://www.cnblogs.com/brancepeng/p/5001408.html

angularJs为什么在近几年风头一时无二?相关推荐

  1. [译]用AngularJS构建大型ASP.NET单页应用(二)

    原文地址:http://www.codeproject.com/Articles/808213/Developing-a-Large-Scale-Application-with-a-Single 客 ...

  2. 蓝桥杯Java大学C组近三年真题解析(二)——暴力、模拟题

    目录 第十一届 约数个数 题目 题解 代码 代码 寻找 2020 题目 题解 代码 代码 跑步锻炼 题目 题解 代码 代码 代码 灵活使用Excel 平面分割 题目 题解 代码 代码 七段码 题目 ​ ...

  3. 中国大学生服务外包创新创业大赛近五届(八至十二)赛题汇总

    届次 赛题编号 命题企业 题目类别 专业方向 赛题 备注 十二 A01 今目标 应用类 企业服务 小微企业跨组织人才管理系统 1.企业服务--企业服务外包,如法务.财务.人力资源.知识产权.咨询策划. ...

  4. 考研英语近义词与反义词·十二

    sacred:神圣的,宗教的,神圣不可侵犯的,庄严的:同义词:holy,divine sake:目的,缘故,利益:同义词:purpose,reason,interest sanction:批准,准许: ...

  5. 半数以上国产手游曾使用他开源的引擎:Cocos和王哲的故事 | 二叉树视频

    2007 年,苹果发布 iPhone,从此开启了移动互联网时代,人们想用智能手机玩游戏,然而传统的游戏引擎最开始瞧不起新平台,不愿意开发适配版本,时代在呼唤新的游戏引擎. 在这样的背景下,一批生而移动 ...

  6. 携手京东发布锐龙品牌整机,AMD这次会赶超英特尔吗

    锐龙一年份额超四成,AMD成绩创近十年最佳 众所周知,CPU市场长期以来被英特尔占据着大部分份额,特别是商用PC领域更是被英特尔牢牢把持.这种局面一直持续到2017年AMD发布采用了全新Zen架构的锐 ...

  7. 玩不转大数据就别勉强了,或许“小数据”才是真正的终南捷径

    如今大多数人会经常听到"大数据",如果选择一个词来代替"大",大部分人的脑海里会出现"海量"."巨量"的字眼,但是,数据 ...

  8. 阿里聚安全年终盘点|2017互联网安全领域十大话题

    导语:2017年即将过去,2018新年还有3天,回顾2017,看似很平淡地过去了,但总有一些印记让我们印象深刻.作为互联网安全领域的一份子,阿里聚安全时刻关注着互联网行业的安全事件,让我们一起来盘点2 ...

  9. 造车烧钱,服务烧钱,电池自燃,蔚来造车“火中如何取粟”

    文|ihahe 来源|智能相对论(aixdlun) 频繁自燃之后,蔚来汽车主动召回.创始人道歉,但蔚来显然依然还处在舆论的中心. 在经历放弃建厂.自燃事件.首度召回和特斯拉国产四连击,蔚来如在火中烧烤 ...

最新文章

  1. hashlib 和loggin模块
  2. python append 浮点数 精度_Python打牢基础,从12个语法开始!
  3. 【深度学习】查准率、召回率、AP、mAP
  4. Android 6.0以上运行权限及RxPermissions的使用
  5. 【转贴】mysql导入数据load data infile用法
  6. vue按照url地址访问出错404
  7. python用什么电脑配置好_学python用什么配置的电脑
  8. HDOJ 2795 Billboard
  9. 面向对象及os模块、socket模块
  10. Nginx负载均衡如何进行配置
  11. NOIP欢乐模拟赛 T1 解题报告
  12. oracle数据库SQL防止超长,SQL Server和Oracle防止数据锁定的比较
  13. 小波变换去噪python_小波去噪方法及步骤_小波去噪方法的比较
  14. iOS label的换行符\n
  15. topcoder使用
  16. UE4 初学者内容包介绍
  17. (一)遗传算法基本概念总结
  18. 工程力学(17)—应力状态和强度理论
  19. Win10系统切换输入法快捷键设置方法
  20. LabVIEW学习分享(2)

热门文章

  1. python Selenium调用 IE/GoogleChrome/Firefox浏览器驱动的方法及下载地址
  2. Linux系统管理(8)——Ubuntu安装ssh服务 以及版本查看命令
  3. 上“低代码”半年,30名程序员被裁,CTO离职
  4. bootstrap table 服务端分页
  5. HashMap——ConcurrentHashMap
  6. java语言c语言基础_新手入门选什么:有些人说C语言要比Java更难!你应该怎么办?...
  7. 饿了么超时20分钟_饿了么:5分钟;美团:8分钟......消费者:???
  8. python时间格式化
  9. rand函数怎么避免重复_Excel常用的计算统计函数
  10. 2021暨南大学计算机技术上岸经验贴