慕课网AngularJS实战课程笔记
来源:互联网 发布:js 事件 教程 编辑:程序博客网 时间:2024/06/06 02:29
基础概念
前端框架与前端类库
- 类库:函数集合。其内容是封装一些实现复杂功能的或可复用的代码,目的是提高编码工作的效率。举例:jQuery, GreenSock(JS动画库),mootools(JS API封装库),zeptojs(移动端jQuery)……
参考:常用JavaScript类库与框架总结
(补充:JavaScript全栈开发必备工具)
- 框架:一种设计模式或几种模式组合的体现。改变以DOM操作为核心的前端工作流,向后端工作方式靠拢。针对某些领域或场景提供完整解决方案,提高开发效率。举例:AngularJS,React,Vue.js……
AngularJS 1.x 四大特性
①MVC
②模块化(依赖注入,服务)
③指令
④双向数据绑定
前端开发环境/工具组合
- 代码编辑:sublime、webstorm
- 断点调试:浏览器开发者工具、batarang(AngularJS定制)
- 版本管理:git
- 代码合并压缩混淆:grunt,gulp
- 依赖管理:bower,npm
- 单元测试:Karma(容器)+Jasmine(测试语法)
- 集成(e2e)测试:protractor
- 轻量级服务器:http-server(基于node.js的HTTP接口)
核心:node.js
参考:
开发工具等综合性资源!!!
AngularJS端到端测试
Controller
- 一个Controller控制一小块View(单一功能)
- 在Controller中不操作DOM(在指令中操作)
- 在Controller中不做数据过滤或格式化($filter服务、表单控件)
- Controller彼此不会调用,通过scope的继承或事件机制通信
- Controller不继承,复用的代码写进服务(Service/Provider/factory…)
模块
项目结构
- HTML:引入资源文件的index.html和放模板html代码的文件夹
- CSS:单独文件夹
- 图片等资源:单独文件夹
- framework文件夹:angular.js等引入的框架
- JS:module创建注入和配置(app.js),controller创建和配置(controllers.js),指令(directives.js),过滤器(filters.js),服务(services.js),路由(routes.js)
- 依赖管理(包、配置文件……)
- 测试(单元、端到端)
模块划分
一个总的app模块为入口,controller、directives、services、routes、filters分别放一个模块中。app模块依赖这些模块
指令
核心配置项(config)
restrict
(匹配模式):Attribute Element coMment Class (AEMC)template
(HTML模板代码):”HTML代码”templateUrl
:”HTML模板文件的地址”
//模板缓存服务$templateCache,可在多个指令内使用同一个模板- 模板替换方式
replace
: true,替换指令(包括本身和子元素)transclude
: true,保留指令子元素的内容。需要template中用ng-transclude属性指定接收内容的元素
指令的运行(加载→编译→链接)
- 编译
compile:function(elem,attrs,transclude){...}
//一般不写 - 链接
link: function(scope, elem, attrs, contrller){...}
compile
和link
同时存在,以compile
为主,link
失效compile
与link
的区别:compile
:对指令的模板进行转换link
:在model和view之间建立关联,注册监听事件。监控model的变化:$scope.$watch('变量名',回调)
注意“防抖动”:使用$timeout服务延迟发送- 在link阶段scope才绑定,在compile阶段不能操作scope
- 同一指令多个实例,compile只执行一次,link每个实例都执行一次
交互
- 指令与controller:scope.函数。
scope.$apply(函数/Angular表达式)
- 指令之间:配置项scope、controller、require
独立scope
- 配置项scope取值为空对象(
{}
) - 绑定策略:
{ 变量名:绑定策略}
@
:字符串变量的双向绑定=
:对象变量的双向绑定&
:在指令中绑定父级scope的函数
内置指令(官方文档)
a、form、各式input、ngInclude、script
指令库
angular-ui
服务
$http服务:$http({配置对象}).success(function).error(function)
(promise风格)
自定义Service注意:①命名不要用’$’开头②注入时系统在前,自定义在后
特性:
①服务是单例的
②注入机制:先由$injector实例化
③存在于整个应用的生命周期(可用来共享数据)
Service、Factory、Provider、Constant、Value本质上都是Provider,而语法上有差异。
数据格式化专用服务:$filter。内置格式化方式,也可以自定义。
路由
原生:ng-route
扩展插件:ui-router,可以嵌套
子模板指令 ui-view
状态指令 ui-sref
嵌套:状态可以有子状态。用点标记:父状态.子状态
表单
Angular表格插件:ng-grid
form指令
扩展form元素:允许嵌套、自动校验、防止重复提交
给input增加type属性(HTML5更多)
添加4个css类样式
AngularJS表单基础
AngularJS Form 进阶:远程校验和自定义输入项
双向数据绑定
$scope——树
根:$rootScope,每个模块只有一个。
子scope可以继承父scope的属性和方法。
传播事件:
$emit()
,向上(根)$broadcast()
,向下(包含兄弟)
scope对象:
- 属性(在scope构造函数中添加):内部id……
- 方法(在prototype中):
new、 watch、digest、 eval……
$digest机制——对象深比较:缓存上一次对象的全部值,与新对象逐一比较
不适合树型结构(对象嵌套对象),性能差。
数据绑定关键点:
- 观察者模式:一个Model绑定多个View
- 判断Model是否变化:脏值检查遍历
watch列表,有变化应用就进入 digest循环,直到值不再变化就应用新值,继续遍历$watch列表。遍历完成时即Model稳定,再更新View - 判断深层嵌套的Model某属性是否变化,对象深比较
- A、B两方法互相watch,避免“振荡”——TTL:连续检测到10次(阈值)就停止监听并报错
- 慕课网AngularJS实战课程笔记
- 慕课网AngularJS实战讲解视频笔记
- 《AngularJs实战》笔记
- iOS 实战开发课程笔记
- 慕课网自学-AngularJS实战
- java开发实战课程介绍笔记
- 【慕课网实战课程笔记】Vue.js高仿饿了么外卖App
- 《机器学习实战》课程笔记(第1章)
- 慕课笔记--[课程]webpack深入与实战
- Netty零基础学习实战课程 视频+笔记+代码
- 慕课网HTML+CSS课程笔记
- angularJs项目实战
- AngularJS实战第一章
- AngularJs实战(三)
- AngularJs实战(四)
- AngularJs实战(五)
- AngularJs实战(六)
- AngularJS实战(七)
- jenkins SVNException: svn: E175002解决办法
- Spring中的Ioc
- 史上最详细的iOS之事件的传递和响应机制
- vsftpd配置文件详解
- windows和ubuntu下乱码问题
- 慕课网AngularJS实战课程笔记
- UITableView的常用代理方法
- EclEmma 代码覆盖测试工具分析
- 获取系统相册,并保存文件
- POJ 3311 Hie with the Pie
- 第六周实践项目2————设计武器类
- Linux C线程同步
- 我所理解的OOP——UML六种关系
- Servlet的生命周期