Angular介绍_angular百科_少昊鹰的博客-程序员秘密

Angular介绍

库和框架的区别

  • jQuery:库
  • 库一般都是封装了一些常用的方法
  • 自己手动去调用这些方法,来完成我们的功能
    code $('#txt').val('我是小明'); $('div').text('xx');
  • angular:框架
    • 框架都是提供一种规范或者模式,
    • 我们却要按照它提供的这种规则去写代码
    • 框架会自动帮助我们去执行相应的代码.
  • 其实可以简单的理解为:大而全的是框架,小而精的是库

AngularJs是什么

  • 百度百科http://baike.baidu.com/link?url=CKrQ1574lIOkgQ8-FBB1fxuEJzIf0Jscf2n53rxuVjK37wm0M4LupH--17Ix6towMSRoizil9Dk8mqhK4-PXGK
  • 一款非常优秀的前端高级 JS 框架
  • 最早由 Misko Hevery 等人创建
  • 2009 年被 Google 公式收购,用于其多款产品
  • 目前有一个全职的开发团队继续开发和维护这个库
  • 其核心就是通过指令扩展了 HTML,通过表达式绑定数据到 HTML。
  • Angular不推崇DOM操作,也就是说在NG中几乎找不到任何的DOM操作
  • angular,几乎不会使用angualr操作dom(但是angular内部肯定是使用dom来改变页面的值)
  • Angular 主要是来做什么的,帮助我们方便的去写spa应用程序

什么是AngularJS

  • 一个前端框架,提供一种无DOM操作的编程方式,在前端页面中引入了传统在后台开发中使用的一些思想,增强代码的结构和可维护性
  • 一个功能非常完备的前端框架,通过增强HTML的方式提供一种便捷开发Web应用程序的方式
  • 其核心特点就是几乎无任何DOM操作,让开发人员的精力和时间全部集中于业务
  • MVC的特性增强了代码的结构和可维护性,应对需求的变化做出最小的改动

什么是 SPA

  • single page application的缩写
  • 单页应用程序
  • 原理就是:通过监视hashchange事件,根据不同的url中的锚点值,去动态的发送ajax请求去请求数据(简单的说就是不会看到页面刷新)
  • 网站实例:music.163.com

SPA的优点

  • 响应效果好,体验好
  • 重用资源
  • 方便统一控制和代码重用,不想访问应用了,在入口的控制一下就可以。

扩展:如何获取url中的各部分参数,比如hash

  • 字符串操作
  • 正则表达式去匹配url
  • 创建a对象

    var a=document.createElement('a');
    a.hreg='http://www.baidu.com?id=23#home';
    a.pathname
    a.hash
    a.search

为什么要使用Angular

  • 总结一句话:为了更少的代码,实现更强劲的功能
  • 很多操作都需要dom操作,但是angular中没有那么多的dom操作,这是因为angular帮我们封装了,减少了我们开发人员的dom操作
  • 一般在angular中就不会出现jquery了,因为这两种思想正好是相悖的。
  • 上面的意义只是皮毛,它真正的意义是:angular又是一场革命,带领前端进入了MVX时代。
  • 这就像从手工业转为机械工业一样,以前很多东西都是我么你自己手动去做,现在我们有了gulp,webpack这些自动化构建工具。

Angular的使用

Angular相关资料

安装 Angular

  • 暴力安装:
  • 手动的去github下载安装
  • 通过工具安装:
  • npm : npm install angular
  • bower: bower install angular
  • CDN
  • 本质都为了拿到angular.js这个文件。

理解angular的整个开发流程

  • ng-app:告诉angular来管理页面的代码块是什么(ng-app所在元素及其子元素)
  • ng-click : 类比成onClick,是用来为当前元素注册点击事件的
  ng-click="val = (val-0) + 1"
  相当于:
  var add = document.getElementById('add');
  add.addEventListener('click',function(){

  }
  • ng-model: 用来获取文本框的值,是于input的value值进行了绑定。
    • 改变ng-model的属性值对应的值,文本框的值就会改变,
  ng-model = "val";//angular就会帮助我们去创建一个val变量
  相当于:
  var num = document.getElementById('num').value;
  • ng-init 指令: 用于对ng-model指定的值进行初始化操作

    ng-init = "val = 10"
  • ng-controller:我们的业务逻辑,数据模型都要写在这里面

  • $scope:这个就相当于我们所画的途中的数据模型, 在它上面给以挂载变量和方法。

  • 表达式: { {}},相当于模板函数中的模板输出
  • 在大括号内部写上一个ng-model对应的文本框的值

使用AngularJS的流程

  1. 借助npm下载到本地
  2. 在HTML代码中引入Angular.js包
  3. 在JS代码中通过angular.module('myApp', [])注册一个模块
  4. 在HTML代码中将刚刚定义的模块通过ng-app="myApp"指令的方式作用到一个特定的元素上
  5. 根据当前页面的情况(业务块)划分控制器
  6. 在HTML代码中将刚刚定义的控制器通过ng-controller="ControllerName"作用到特定的元素上
  7. 建模(根据界面原型抽象一个数据模型)得到一个视图模型(ViewModel)
  8. 在JS代码中通过$scope暴露需要提供到页面的数据成员
  9. 在HTML代码中将刚刚暴露出来的数据通过类似ng-model/{ {}}/ng-click之类的指令绑定到特定的元素上
  10. 在JS中完成业务逻辑(还可以展开)
  • 在思想上:
  • JQ提高了操作DOM的开发效率
  • NG几乎没有任何DOM操作(不是没有,只是不用我们自己操作)
  • NG内置一个类似JQ的东西angular.element()
  • Angular 不提倡DOM操作,如果必须使用DOM的话,也不建议再去引用jquery,有内置

如何查看angular离线文档

  1. angular文档设计的非常好都是一个功能一个功能的js分开的,主模块有1000多kb,这个应该是大家见过的最大的js库了
  2. 因为angularJS的文档需要引用angularjs的东西,所以要用http-server模块打开的话,必须在文档的根目录启动hs -o

Angular 核心概念

  • 模块化
  • MVC - 思想
  • 指令
  • 双向数据绑定

angular.module(模块)

作用

  • 通过模块对页面进行业务上的划分
  • 将重复使用的指令或者过滤器之类的代码做成模块,方便复用
  • 注意必须指定第二个参数,否则变成找到已经定义的模块
  • 请参照资料-备课代码-06-module.html理解

语法

  • 根据不同的功能划分不同的模块。
  • 创建一个模块
  • 语法: angular.module('模块名',[])
    • 第二个参数是个数组,这个数组里的每一个元素,是我们当前模块依赖的其他模块
    • 注意: 即便我们不依赖其他的模块,也需要传递一个空数组
      因为如是不传第二个参数的话,这个方法的作用就会变为获取一个名为"模块名"的模块对象
    • angular.module('myApp'),是获取一个名为myApp的模块对象。
    • 我们需要给ng-app指令一个属性值,这个值就是我们创建的模块名:
    • 告诉anuglar,现在由我们自己创建的这个模块来管理页面。

angular.controller(控制器)

作用

  • 为应用中的模型设置初始状态
  • 通过$scope对象把数据模型或者函数行为暴露给视图
  • 监视模型的变化,做出相应的动作
  • 请参照资料-备课代码-08-reg2.html理解

语法

  • 控制器是通过模块对象来创建的:
  • 语法:
    var app = angular.module('模块名',[])
    app.controller('控制器的名字',function($scope){ // 在这个function里写我们具体想要执行的代码 // $scope 就是用来存储我们的数据模型. })

  • 我们需要在页面上使用了数据模型的元素父级元素上加上ng-controller指令,并给这个指令一个属性值,这个值就是我们创建的控制器名字。

双向数据绑定(双向数据绑定)

  • 页面文本框的值改变,导致数据模型的值发生改变,
  • 数据模型的值的改变,反过来导致页面文本框的值的改变,这种相互影响的关系,我们起了个名词,叫作双向数据绑定。
  • ng-model = ""

单向数据绑定

  • 只能一数据模型的值改变,导致页面值的改变;

MVC 思想

什么是 MVC 思想

  • 将应用程序的组成划分为三个部分:Model View Controller
  • 模型:数据处理
  • 视图:以友好的方式向用户展示数据
  • 控制器:业务逻辑处理
  • 控制器的作用就是初始化模型用的;
  • 模型就是用于存储数据的,做一些业务逻辑的操作。
  • 视图用于展现数据

  • 请参照资料-图片-03-富士康MVC类比图和04-MVC在代码中的应用理解
  • 请参照资料-备课代码-07-register.html理解

用MVC构建应用的优势

  • 剥离开视图和逻辑之间的关系,无论怎么修改dom操作都不用修改业务逻辑代码
  • 请参照资料-备课代码-09-calc2.html理解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33620483/article/details/77989182

智能推荐

局部变量_Linux编程学堂的博客-程序员秘密

C语言提供了局部变量的定义,局部变量也称为:内部变量。局部变量就是定义在大括号{ }包含的代码块内,例如:if(){ }if(){ }else{}for(){ }while() { }do{ } while();switch(){ }还有函数的定义,例如:voidfunc(void){ }在大括号{}包含的代码块内定义的变量,称为:局部变量。程序测试例子如下例如:程序运行结果如下:可以看到,在main函数中定义的变量a和变量b,都是局部变...

Windows通过定时计划任务执行bat文件_windows计划任务执行bat_帅的发光发亮的博客-程序员秘密

Windows通过计划任务定时执行bat文件1. 打开win10的计划任务2. 打开创建基本任务向导3. 创建基本任务4. 触发器设定5. 操作1. 打开win10的计划任务路径如下:控制面板\系统和安全\管理工具\任务计划程序 2. 打开创建基本任务向导打开计划任务程序后,在右边的操作栏选择 创建基本任务向导3. 创建基本任务首先输入任务的名称,描述写不写无所谓,不过如果要长期运行还是最好写一下,便于之后快速了解这个任务是干吗的。填写完毕点击下一步。4. 触发器设定这里的触发器就

CTF工具集合_极光时流的博客-程序员秘密

CTF工具网址逆向工程Hex editors:网络隐写:电子取证:社会工程无线网络AWD中防护AWD中攻击:编程以及编码工具/PPC逆向工程GDB -http://www.gnu.org/software/gdb/download/IDA Pro – ==https://www.hex-rays.com/products/ida/supportImmunity Debugger –http...

[ArcGIS平台系列]Portal,新一代Web GIS平台的控制中枢_arcgis portal是什么_Esri中国的博客-程序员秘密

ArcGIS 10.3推出了一系列更新,包括推出Named User的全新授权模式,将Apps提升到平台入口级别,Portal是平台的访问控制中枢等重要理念。ArcGIS 10.3标志着新一代Web GIS平台的实质性落地,其中,Portal成为平台的访问控制中枢,是保证新一代Web GIS平台落地的重要特性之一。Portal是资源访问和权限控制的中枢      ArcGIS平台具有三大关

《程序员》杂志即将推出《程序员2008精华本》_《新程序员》编辑部的博客-程序员秘密

            作为国内针对开发人员的专业技术权威刊物,秉承服务中国IT人的思想,为满足广大开发人员的需要,七年来,《程序员》杂志社都会精选全年12期杂志精华,编辑成册,出版发行,精华本(原合订本)广受开发者喜爱。      《程序员2008精华本》吸取历年读者调查反馈的结果,推陈出新,内容包含08年《程序员》精彩内容合订、热点技术增值文章、2008中国开发年鉴、程序员手册四大

ElasticSearch用head将查询语句命中的结果全部删除_西方契约的博客-程序员秘密

语句:语句 写起来比较麻烦,可以 先使用 基本查询 然后显示查询语句;可以直接复制查询语句 都复合查询后 将 query之外的参数都删掉;然后在复合查询中拼写路径:http://ip:端口/索引名称/索引类型 然后 参数: _delete_by_query ;请求方式post;就可以删除查询语句命中的所有结果;【不过在删除前,一定要先查询一下,确认查询结果为所需要删除的数...

随便推点

小心,微软lync 2013 10月的更新_weixin_34363171的博客-程序员秘密

在我的环境中,以下2个补丁分别导致了前端服务和会议助理服务不能启动,实在很坑爹。kb2881684 kb2881700好在删除后就正常了。。 附典型的错误日志:日志名称: System 来源: Service Control Manager 日期: 2013/11/15 21:00:51 事件 ID: 7024 任务类别: 无 级别...

C++11新特性_gnu c++11 feature_UU_Yang的博客-程序员秘密

转自:http://www.cnblogs.com/pzhfei/archive/2013/03/02/CPP_new_feature.html  C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百科不是知道是台湾还是香港人翻译的然后由工

从jsp页面获取数字到Servlet结果一直空指针_จุ๊บ江边星辰的博客-程序员秘密

sevlet部分代码:protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {if (request.getParameter(“cid”)!=null){ //第一步先进行获取数据是否为空判断String ...

阿里巴巴集团开源软件梳理_weixin_34212762的博客-程序员秘密

小蚂蚁说:开源先锋Tim O'Reilly 先生曾言:“开源软件是计算机工业最宝贵的财富”。阿里巴巴是开源社区积极的共建者,为开源软件发展做了重要的贡献,相关的 GitHub 2017年数据统计显示,阿里巴巴是唯一一家入围 GitHub 顶尖贡献名单的中国公司,值此1024程序员节,我们梳理阿里巴巴集团的重要开源项目,希望能够对大家有所帮助。目录一...

Java安全(JCA/JSSE):Java加密框架(JCA)简要说明_恒奇恒毅的博客-程序员秘密

加密服务总是关联到一个特定的算法或类型,它既提供了密码操作(如Digital Signature或MessageDigest),生成或供应所需的加密材料(Key或Parameters)加密操作,也会以一个安全的方式生成数据对象(KeyStore或Certificate),封装(压缩)密钥(可以用于加密操作)。     Java Security API中,一个engine class就是定

愿Linux红帽旋风吹得更加猛烈吧!_weixin_33849942的博客-程序员秘密

大约在2000年年初。《中国青年出版社》准备从台湾引进图书(中译本)“Linux红帽旋风”(美国Robert Young),让我为该书写一个前言。该书作者罗伯特.扬是美国红帽公司(RedHat)的奠基人,主张“软件开源,服务为王”。什么是“软件开源”?这是一个根本问题。假设把开源软件当做“幌子”骗人,实际推行的却是另外一套(把开源软件变成国产...

推荐文章

热门文章

相关标签