一、Angular 简介

1、 什么是 AngularJS

- 一款非常优秀的前端高级 JS 框架

- 最早由 Misko Hevery 等人创建

- 2009 年被 Google 公式收购,用于其多款产品

- 目前有一个全职的开发团队继续开发和维护这个库

- 有了这一类框架就可以轻松构建 SPA 应用程序

- 轻松构建 SPA(单一页面应用程序)

- 单一页面应用程序:

+ 只有一个页面(整个应用的一个载体)

+ 内容全部是由AJAX方式呈现出啦的

- 其核心就是通过指令扩展了 HTML,通过表达式绑定数据到 HTML

2、为什么使用 AngularJS

- 更少的代码,实现更强劲的功能

- 将一些以前在后台开发中使用的思想带入前端开发

- 带领当前市面上的框架走向模式化或者架构化

3、AngularJS 的核心特性

- MVC

- 模块化

- 自动化双向数据绑定

- 指令系统

4、相关链接

- http://www.apjs.net/

- http://www.angularjs.cn/

- http://docs.angularjs.cn/api

- https://material.angularjs.org

- http://angular-ui.github.io/

5、Angular 上手

- 安装 Angular

(1)下载 Angular.js 的包

+ https://github.com/angular/angular.js/releases

(2)使用 CDN 上的 Angular.js

+ http://apps.bdimg.com/libs/angular.js/1.4.9/angular.min.js

(3)使用 Bower 安装

```bash

  bower install angular

```

(4)使用 NPM 安装

```bash

 npm install angular

```

- 每种方式安装包,本质都是将angular的库下载到当前文件夹中

6、angular的优势

  • Angular 最大程度的减少了页面上的 DOM 操作;
  • 让 JavaScript 中专注业务逻辑的代码;
  • 通过简单的指令结合页面结构与逻辑数据;
  • 通过自定义指令实现组件化编程;
  • 代码结构更合理;
  • 维护成本更低;
  • Angular 解放了传统 JavaScript 中频繁的 DOM 操作

7、angular中最重要的概念是指令(directive)

- ng-model 是双向数据绑定的指令,效果就是将当前元素的value属性和模型中的user.name建立绑定关系

8、运行官方文档

由于众所周知的原因,Angular 官网打不开

我们需要本地运行 Angular 文档

下载最新的 Angular 包

解压后有一个 docs 文件夹

必须通过 http 服务器访问该文件夹

可以通过 SublimeServer 或者 http-server 运行

9、推荐工具

- 在线编辑器

+ https://jsfiddle.net/

二、 Angular 基础概念

1、MVC 思想

- 将应用程序的组成划分为三个部分:Model View Controller

模型:处理数据和业务逻辑

视图:以友好的方式向用户展示数据

控制器:组织调度相应的处理模型

- 控制器的作用就是初始化模型用的;

- 模型就是用于存储数据的

- 视图用于展现数据

- 登陆案例分析MVC思想

- 模型

+ 我们数据库中所有用户的信息

+ 接受控制器传来的用户名和密码进行校验的业务逻辑并返回true/false

- 控制器

+ 接受用户在界面上填写的用户名和密码

+ 将用户名和密码交给模型

- 视图

+ 给用户呈现一个表单

+ 接受用户输入内容,并将其提交给控制器

+ 根据控制器返回的数据,响应用户页面

2、模块(Module)

AngularJS很重要的一个特性就是实现模块化编程,我们可以通过以下方式创建一个模块,对页面进行功能业务上的划分

 // 创建一个名字叫MyApp的模块,第二个参数指的是该模块依赖那些模块

 var myApp = angular.module("MyApp", []);

也可以将重复使用的指令或过滤器之类的做成模块便于复用

注意必须指定第二个参数,否则变成找到已经定义的模块

3、控制器(Controller)

调度逻辑的集合

 angular.module('OneApp', [])

     .controller('HelloController', [

         '$scope',

         function($scope) {

             $scope.p = {

                 name: 'zhangsan'

             };

         }

     ]);

控制器的三种主要职责:

  • 为应用中的模型设置初始状态
  • 通过$scope对象把数据模型或函数行为暴露给视图
  • 监视模型的变化,做出相应的动作

// 监视购物车内容变化,计算最新结果

$scope.$watch(‘totalCart’, calculateDiscount);

$scope(上下文模型)

  • 视图和控制器之间的桥梁
  • 用于在视图和控制器之间传递数据
  • 利用$scope暴露数据模型(数据,行为)

4、表达式(Expression)

作用:

使用 表达式 把数据绑定到 HTML。

语法:

表达式写在双大括号内:{{ expression }}。

比较:

表达式作用类似于ng-bind指令

建议更多的使用指令

AngularJS表达式很像JavaScript表达式

它们可以包含文字、运算符和变量

如 {{ 5 + 5 }} 或 {{ firstName + ‘-’ + lastName }}

对比 JavaScript 表达式

相同点:

AngularJS 表达式可以包含字母,操作符,变量

不同点:

AngularJS 表达式可以写在 HTML 中。

AngularJS 表达式不支持条件判断,循环及异常。

AngularJS 表达式支持过滤器。

5、数据绑定

  • 单向数据绑定

    模型变化过后,自动同步到界面上;

    一般纯展示型的数据会用到单项数据绑定;

    使用表达式的方式都是单向的

  • 双向数据绑定

    两个方向的数据自动同步:

    模型发生变化自动同步到视图上;

    视图上的数据发生变化过后自动同步到模型上;

第214天:Angular 基础概念的更多相关文章

  1. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  2. angular基础入门

    第一章 AngularJs入门 AngularJS是一款由Google公司开发维护的前端框架,其克服了HTML在构建应用上的诸多不足,从而降低了开发成本提升了开发效率. 1 特点 AngularJS与 ...

  3. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  4. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  5. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  6. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  7. JavaBean 基础概念、使用实例及代码分析

    JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...

  8. RabbitMQ基础概念详细介绍

    http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...

  9. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

随机推荐

  1. idea 和 WebStorm 配置 http代理 并更换主题

    proxy,http,socks5 当前 idea 主题为:(idea 自带) idea 编辑器的主题颜色字体为:(网上下载的 jar 包) 因为今天在安装下面这个主题时需要在 idea的 plugi ...

  2. rabbitMQ的三种路由模式

    rabbitMQ工作流程: 1.声明交换机 2.声明消息队列 3.绑定交换机和队列 4.生产者往交换机里发送新消息 5.交换机根据所选的模式和routingKey决定消息发往哪条消息队列 6.一个消费 ...

  3. LeetCode 刷题笔记 155. 最小栈(Min Stack)

    tag: 栈(stack) 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素 ...

  4. 【Skynet】Traceback汇总

    error: ./skynet/lualib/skynet.lua:534: ./skynet/lualib/skynet.lua:156: ./logic/gate/socket_msg.lua:5 ...

  5. 开源ITIL管理软件iTop 2.5-2.6安装

    环境说明 : 操作系统centos 7.itop版本 iTop-2.5.0-3935.数据库:mariadb iTop 2.5只支持PHP5.6以上版本,本例安装的是php72w版本 1.下载链接: ...

  6. Cocos2dx源码赏析(1)之启动流程与主循环

    Cocos2dx源码赏析(1)之启动流程与主循环 我们知道Cocos2dx是一款开源的跨平台游戏引擎,而学习开源项目一个较实用的办法就是读源码.所谓,"源码之前,了无秘密".而笔者 ...

  7. 关于java内存泄露的总结--引用的类型:强引用,弱引用,软引用

    今天面试了一家公司的java开发方面的实习生,被问到一个问题:如何处理java中的内存泄露问题,保证java的虚拟机内存不会被爆掉,当时其实觉得面试官的问题有点泛,所以也没有很好领会他的意思,答案也不 ...

  8. API验证

    API验证说明 API验证: a. 发令牌: 静态 PS: 隐患 key被别人获取 b. 动态令牌 PS: (问题越严重)用户生成的每个令牌被黑客获取到,都会破解 c. 高级版本 PS: 黑客网速快, ...

  9. 20162328蔡文琛 week10 大二

    20162328 2017-2018-1 <程序设计与数据结构>第十周学习总结 教材学习内容总结 理解图与有向图.无向图 理解带权图 会应用带权图 理解图的广度优先遍历和深度优先遍历 掌握 ...

  10. 软工大作业DB天气项目风险评估

    风险 发生概率 损失 风险度 解决方案 项目延期 80% 浪费时间,项目完成进度降低,考试得分低 79% 提前做好详细的准备工作,各方面做好沟通. 工作效率低下 30% 影响进度,使项目延期. 85% ...