Angular 框架

Angular介绍

库和框架的区别

  • jQuery:库

    • 库一般都是封装了一些常用的方法
    • 自己手动去调用这些方法,来完成我们的功能
          $('#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理解

Angular框架的更多相关文章

  1. 初始angular框架(1)

    作为一个从来没有使用过的angular框架的小白  第一步肯定是 看文档!  没错就是看文档了!

  2. css或Angular框架限制文本字数

    提需求的来了 某一期产品迭代时,新增了一个小功能,即:在单元格中的文本内容,字符超过20个字的时候,需要截断,并显示20个字符+一个省略号,未超过,无视. 这需求看上去不怎么复杂,看起来可以用css做 ...

  3. 浅谈angular框架

    最近新接触了一个js框架angular,这个框架有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入,以上这些全部都是属于angular特性,虽然说它的功能十分的强大 ...

  4. Angular 框架介绍

    库和框架的区别 jQuery:库 库一般都是封装了一些常用的方法 自己手动去调用这些方法,来完成我们的功能code $('#txt').val('我是小明'); $('div').text('xx') ...

  5. Angular框架入门

    今天简单学习了AngularJS框架,在这里我想简单的总结一下我所了解的AngularJS和一些入门案例! 首先,我们要知道什么是AngularJS? AngularJS  诞生于2009年,由Mis ...

  6. 浅析angular框架的cookie

    相信接触过网页编程的基本上都知道cookie这个东西吧,一个毫不起眼,但是又十分的重要的东西,今天我们就来分析一下这个小东西,我们都知道客服端通过发送http请求到服务器请求我们的数据,当我们的服务器 ...

  7. 全选与单选chekbox的自定义实现(angular框架)

    2017年7月4日,我原本可以像其他同时一样早点回家,玩几把王者荣耀,但是我没有,因为我选择留下来,写一篇博客. 项目中经常性的会遇到什么点击"全选"按钮,勾中所有"单选 ...

  8. Angular 框架下ng-repeat内部使用tooltip插件的办法

    普通情况下 <button type="button" class="btn btn-default" data-toggle="tooltip ...

  9. 码农视角 - Angular 框架起步

    开发环境 1.npm 安装最新的Nodejs,便包含此工具.类似Nuget一样的东西,不过与Nuget不同的是,这玩意完全是命令行的.然后用npm来安装开发环境,也就是下边的angular cli. ...

随机推荐

  1. Java Bytecode Instructions List

    monic Opcode(in hex) Other bytes Stack[before]→[after] Description aaload 32   arrayref, index → val ...

  2. 何为.Net Remoting【转】

    借助基维百科给它的定义如下: NET Remoting 是微软 .NET Framework 中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用 SOAP 以外的协定来通讯 ...

  3. java之容器

    先来一张容器的API框架图,我们在java中所学的所有知识,都是根据下面这张图来学习的.... 容器API: 1.Collection接口------定义了存储一组对象的方法,其子接口Set和List ...

  4. shell来start、stop、restart应用程序模板

    这里使用shell中的case语法: case分支语句格式如下: case $变量名 in 模式1) 命令列表 ;; 模式2) 命令列表 ;; *) ;; esac case行尾必须为单词“in”,每 ...

  5. tengine-2.1.0 + lua + base64

    参考:http://my.oschina.net/eduosi/blog/169606 安装 readline,lua 编译需要用到这个,centos 可以通过 yum 直接安装,如果不需要系统的,可 ...

  6. Second Level Cache for Entity Framework 6.1

    Second Level Cache for Entity Framework 6.1 Entity Framework does not currently support caching of q ...

  7. Shader的语法

    Shader "name" { [Properties] Subshaders [Fallback] }(1)Properties:{ Property [Property ... ...

  8. debian7.1 sources.list

    deb http://mirrors.163.com/debian wheezy main non-free contribdeb http://mirrors.163.com/debian whee ...

  9. Vue基础---->VueJS的使用(一)

    Vue.js是一个构建数据驱动的web界面的库.它的目标是通过尽可能简单的API 实现响应的数据绑定和组合的视图组件,今天我们就开始vue.js的学习. vue的安装及使用 一.vue的下载地址:ht ...

  10. .NET框架面向对象分层的个人想理

    简单.层次清晰不要过度优化,接口这玩意儿就是个双刃剑,玩好了解藕,玩不好自找麻烦,好的代码永远都是傻瓜都能看懂的. 总结成以下几条: 公用层 代码公用并且与第三方DLL和业务逻辑无关的 独立出来 逻辑 ...