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相关资料
- AngularJS 1.x 官方网站
- AngularJS 2.x 官方网站
- Google Material Design for Angular
- Angular UI(Angular最大的第三方社区)
- AngularJS中文社区
- AngularJS中文社区提供的文档(不用FQ)
安装 Angular
- 暴力安装:
- 手动的去github下载安装
- 通过工具安装:
- npm :
npm install angular
- bower:
bower install angular
- npm :
- 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的流程
- 借助npm下载到本地
- 在HTML代码中引入Angular.js包
- 在JS代码中通过
angular.module('myApp', [])
注册一个模块 - 在HTML代码中将刚刚定义的模块通过
ng-app="myApp"
指令的方式作用到一个特定的元素上 - 根据当前页面的情况(业务块)划分控制器
- 在HTML代码中将刚刚定义的控制器通过
ng-controller="ControllerName"
作用到特定的元素上 - 建模(根据界面原型抽象一个数据模型)得到一个视图模型(ViewModel)
- 在JS代码中通过
$scope
暴露需要提供到页面的数据成员 - 在HTML代码中将刚刚暴露出来的数据通过类似
ng-model/{{}}/ng-click
之类的指令绑定到特定的元素上 - 在JS中完成业务逻辑(还可以展开)
- 在思想上:
- JQ提高了操作DOM的开发效率
- NG几乎没有任何DOM操作(不是没有,只是不用我们自己操作)
- NG内置一个类似JQ的东西
angular.element()
- Angular 不提倡DOM操作,如果必须使用DOM的话,也不建议再去引用jquery,有内置
如何查看angular离线文档
- angular文档设计的非常好都是一个功能一个功能的js分开的,主模块有1000多kb,这个应该是大家见过的最大的js库了
- 因为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 框架介绍的更多相关文章
- Angular框架
Angular 框架 Angular介绍 库和框架的区别 jQuery:库 库一般都是封装了一些常用的方法 自己手动去调用这些方法,来完成我们的功能 code $('#txt').val('我是小明' ...
- css或Angular框架限制文本字数
提需求的来了 某一期产品迭代时,新增了一个小功能,即:在单元格中的文本内容,字符超过20个字的时候,需要截断,并显示20个字符+一个省略号,未超过,无视. 这需求看上去不怎么复杂,看起来可以用css做 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
[连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目 录 第一章 通讯框架介绍... 2 1.1 通讯的本质... 2 1 ...
- YARN基本框架介绍
YARN基本框架介绍 转载请注明出处:http://www.cnblogs.com/BYRans/ 在之前的博客<YARN与MRv1的对比>中介绍了YARN对Hadoop 1.0的完善.本 ...
- 初始angular框架(1)
作为一个从来没有使用过的angular框架的小白 第一步肯定是 看文档! 没错就是看文档了!
- Selenium自动化测试框架介绍
Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...
- UiAutomator自动化测试框架介绍
UiAutomator自动化测试框架介绍 环境搭建 1 必要条件 1.1 JDK 1.2 SDK(API高于15) 1.3 Eclipse 2 ...
- [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续
英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...
- MJExtension框架介绍
MJExtension框架介绍 标签: MJExtension 2015-05-01 08:22 1120人阅读 评论(0) 收藏 举报 分类: Foundation(14) 版权声明:本文为博主 ...
随机推荐
- 六,mysql优化——小知识点
1,选择适当的字段类型,特别是主键 选择字段的一般原则是保小不保大,能占用字节小的字段就不用大字段.比如主键,建议使用自增类型,这样节省空间,空间就是效率!按4个字节和按32个字节定位一条记录,谁快谁 ...
- Storm的并行度
在Storm集群中,运行Topolopy的实体有三个:工作进程,executor(线程),task(任务),下图可以形象的说明他们之间的关系. 工作进程 Storm集群中的一台机器会为一个或则多个To ...
- linux crontab 实现每秒执行的实例
linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 原理:通过延时方法 sleep N 来实现每N秒执行. 创 ...
- sublime text 内调试Javascript代码
转自:sublime内调试Javascript代码 之前用webstorm, 可以直接调试js, 在浏览器中也可以调试js,最近换了sublime text, 在想它是否支持调试js代码,于是找到了这 ...
- 用switch函数根据选择不同的radio出现不同的视图
html代码: <!DOCTYPE html> <html> <head> <title></title> <style type=& ...
- javascript数据结构与算法--二叉树(插入节点、生成二叉树)
javascript数据结构与算法-- 插入节点.生成二叉树 二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * ...
- 做了三年的菜鸟web前端的感悟
作为一名真正的菜鸟我想没有比我更加实在的了,三年之中,虽然做了一二三四五六七个项目,基本都是jQuery写的,但是还是一名不折不扣的菜鸟.这让我很尴尬啊,面对前端大量要学习的东西,真的是很头疼,技术更 ...
- golang闭包实现递归
func main() { for i := 1; i < 30; i++ { fmt.Println(Fibonacci(i)) } } func Fibonacci(n int) int { ...
- 如何在.Net Core MVC中为动态表单开启客户端验证
非Core中的请参照: MVC的验证 jquery.validate.unobtrusive mvc验证jquery.unobtrusive-ajax 参照向动态表单增加验证 页面引入相关JS: &l ...
- 红色警戒3原版V1.00基址大全
127.0.0.1 servserv.generals.ea.com ===================================1.04 基址变化 00DFBD74=>DFCDF4 ...