首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第214天:Angular 基础概念

第214天:Angular 基础概念

作者头像
半指温柔乐
发布于 2018-09-11 01:30:45
发布于 2018-09-11 01:30:45
2.3K00
代码可运行
举报
文章被收录于专栏:前端知识分享前端知识分享
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 // 创建一个名字叫MyApp的模块,第二个参数指的是该模块依赖那些模块
2 
3 var myApp = angular.module("MyApp", []);

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

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

3、控制器(Controller)

调度逻辑的集合

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 angular.module('OneApp', [])
 2 
 3     .controller('HelloController', [
 4 
 5         '$scope',
 6 
 7         function($scope) {
 8 
 9             $scope.p = {
10 
11                 name: 'zhangsan'
12 
13             };
14 
15         }
16 
17     ]);

控制器的三种主要职责:

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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、数据绑定

  • 单向数据绑定

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

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

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

  • 双向数据绑定

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2-进军 angular1.x 表达式和指令
使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:
西南_张家辉
2021/02/02
2.9K0
【AngularJS】—— 7 模块化
AngularJS有几大特性,比如:   1 MVC 2 模块化   3 指令系统   4 双向数据绑定 那么本篇就来看看AngularJS的模块化。   首先先说一下为什么要实现模块化:   1 增加了模块的可重用性   2 通过定义模块,实现加载顺序的自定义   3 在单元测试中,不必加载所有的内容   之前做的几个例子,控制器的代码直接写在script标签里面,这样声明的函数都是全局的,显然不是一个最好的选择。   下面看看如何进行模块化: <script type=
用户1154259
2018/01/17
5600
【AngularJS】—— 7 模块化
AngularJS入门心得1——directive和controller如何通信
  粗略地翻了一遍《JavaScript DOM编程艺术》,就以为可以接过AngularJS的一招半式,一个星期过去了,我发现自己还是Too Young,Too Simple!(刚打照面的时候,我就被乱棍砸晕了-_-!)   1.AngularJS是何方神圣   Angular JS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作。    AngularJS是为了克服HTML在构建应用上的不足而设计的
JackieZheng
2018/01/16
2K0
AngularJS入门心得1——directive和controller如何通信
[angularjs] angularjs系列笔记(一)简介
Andularjs 可以构建一个单一页面的应用程序(SPAS SinglePageApplications)
唯一Chat
2019/09/10
5190
第218天:Angular---模块和控制器
所有需要ng管理的代码必须被包裹在一个有ng-app指令的元素中 ng-app是ng的入口,表示当前元素的所有指令都会被angular管理(对每一个指令进行分析和操作)
半指温柔乐
2018/09/11
7960
AngularJS基础入门初探
  (2)由Misko Hevery 等人创建,2009年被Google所收购,用于其多款产品
Edison Zhou
2018/08/20
2.1K0
AngularJS基础入门初探
第217天:深入理解Angular双向数据绑定的原理
双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理。angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成。
半指温柔乐
2018/09/11
4.2K0
第217天:深入理解Angular双向数据绑定的原理
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
25.6K0
【AngularJS】 # AngularJS入门
angularjs学习第一天笔记
    您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
小小许
2018/08/30
2.5K0
angularjs学习第一天笔记
AngularJS浅谈-博客
AngularJS是啥?(一脸懵逼) 简介: AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款
双愚
2018/05/28
2.9K0
前端面试题angular_Vue前端面试题
1,ng-if 跟 ng-show/hide 的区别有哪些? 第一点区别是,ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不显示。 第二点区别是,ng-if 会(隐式地)产生新作用域,ng-switch 、 ng-include 等会动态创建一块界面的也是如此。 这样会导致,在 ng-if 中用基本变量绑定 ng-model,并在外层 div 中把此 model 绑定给另一个显示区域,内层改变时,外层不会同步改变,因为此时已经是两个变量了。
全栈程序员站长
2022/11/07
14.8K0
AngularJS快速入门
记得第一次听说AngularJS这项很赞的Web的前端技术,那时还是2014年,年中时我们我的一个大牛兄弟当时去面试时,被问到了是否熟悉该技术,当时他了解和使用的技术比较多。我们询问他面试情况时,他给俺这个菜菜科普了该技术,印象比较深的是该技术支持前端MVC架构,可以完成大部分原有的后台工作,当时就觉得很神奇,但由于自身技术基础比较薄弱,没有太多时间和积累去学习新的技术,因而搁置了。在2016新年初始,正好有一些富余时间,正好学习下这个被称为就是“”两个大括号“”的前端框架(当前已经非常成熟,国内大部分公司
用户1216676
2018/01/24
2.9K0
AngularJS快速入门
AngularJS - 入门小Demo
如果了解了后端开发知识,想必对这些词汇不会陌生,AngularJS融合了后端开发的一些思想,虽然身为前端框架,但与jQuery框架却是完全不相同的东西。
雨临Lewis
2022/01/11
5.4K0
(4)Angular的开发
angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML。
达达前端
2019/07/22
3.7K0
AngularJS入门心得2——何为双向数据绑定
  前言:谁说Test工作比较轻松,最近在熟悉几个case,差点没疯。最近又是断断续续的看我的AngularJS,总觉得自己还是没有入门,可能是自己欠前端的东西太多了,看不了几行代码就有几个常用函数不
JackieZheng
2018/01/16
1.6K0
AngularJS入门心得2——何为双向数据绑定
【AngularJS】—— 12 独立作用域
前面通过视频学习了解了指令的概念,这里学习一下指令中的作用域的相关内容。 通过独立作用域的不同绑定,可以实现更具适应性的自定义标签。借由不同的绑定规则绑定属性,从而定义出符合更多应用场景的标签。 本篇将会总结下面的内容:   1 为何需要独立作用域   2 如何实现独立作用域   3 作用域的数据绑定 之前有一些错误,是由于replace拼写错误导致的。 拼写正确后,网友发现报错,无法正常工作。这是因为模板中存在单标签<br>,导致模板无法正确解析~ 再次感谢博友们提出的错误! 独立作
用户1154259
2018/01/17
1.6K0
【AngularJS】—— 12 独立作用域
前端框架AngularJS入门
AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。
一点博客
2019/07/24
2.9K0
Angularjs基础(九)
AngularJS 应用 应用程序讲解     实例:         <html ng-app="myNoteApp">           <head>             <meat charset="utf-8">             <script src="http://apps.bdimg.com/libs/angular.js/1.4.6angular.min.js"></script>           </head>           <body>
用户1197315
2018/01/22
1.4K0
前端框架:第一章:AngularJS
AngularJS  诞生于2009年,由Misko Hevery 等人(一帮热血青年)创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。目前企业开发使用最多的是版本一
Java廖志伟
2022/09/28
7.8K0
前端框架:第一章:AngularJS
Angular与MVVM框架
本文作者:IMWeb daihuimi 原文出处:IMWeb社区 未经同意,禁止转载 本文从新人角度讲一讲对angular中MVVM模式的理解,以及angular特性的源码实现。 MVVM核心
IMWeb前端团队
2018/01/08
4.2K0
Angular与MVVM框架
相关推荐
2-进军 angular1.x 表达式和指令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档