angular学习心得

1.Angular是什么,原理是什么,特点?
AngularJS:是一个优秀的JavaScript框架,它实质上是对HTML标签的拓展(指使标签本身具备一定的业务逻辑),是为了克服HTML在构建应用上的不足而设计的,使用它可以很容易的构建SPA(单页应用)
Web应用:提供大量的用户交互,不断更新视图又不进行url跳转
核心特性:MVC,模块化,双向数据绑定,指令,依赖注入等

2.AngularJS觉得哪部分最好用?
双向数据绑定:view的更新会导致model的更新,model更新会自动渲染view,为什么最好用?在渲染页面的时候,有时候是异步操作得到的数据,你不用再担心初始值是undefined,你只需要将$scope.xxx绑定到HTML里,当$scope.xxx取得异步操作的结果后,会自动渲染到页面上。 另外,当用户交互修改了view里的某个数据,会直接触发model更新,并再次渲染到view层,大大减少了开发的代码量
指令系统:ng-app ng-controller ng-show等,还有自定义指令,可以实现一个标签具备简单的业务逻辑,增强html
模块化开发:通过angular本身的路由和模块化的机制,很容易实现SPA

3.AngularJs的性能优化;
①,减少触发脏值检查的操作,如点击事件,$http响应,浏览器$location变更,定时器,$apply()等
②,优化$watch,及时移除不必要的$watch,ng-if vs ng-show, 前者会移除DOM和对应的watch
③,优化ng-repeat,刷新数据时,我们常这么做:$scope.tasks = data || [];,这会导致angular移除掉所有的DOM,重新创建和渲染。若优化为ng-repeat="task in tasks track by task.id后,angular就能复用task对应的原DOM进行更新,减少不必要渲染。
④,慎用filter,耗时,也会多次触发$digest
⑤,不要操作DOM,要用MVC

4.AngularJs的编写流程;
1.需要搭建nodejs,在nodeJs跑起来后才能实现单页开发
2.在项目文件夹public下
1.创建主页index.html,
2.设置angular入口ng-app='',
3.入口名字在config.js里配置,设置引入的位置,
4.调用angular路由插入的接口 ui-view
3.所有的css,js文件都需要引入到index.html文件里,引入的angular相关文件有
angular.min.js主程序文件,
angular-ui-router.js路由文件,
config.js配置文件
其他js文件是各模块的文件
4.配置config.js文件
a.首先定义angular应用主模块angular.module('myapp',['ui.router',xxx这里是各个模块的名字xxx])
b.然后配置config(function($stateProvider,$urlRouterProvider){
$urlRouterProvider.when('','/login') //这里是当页面hash为空时的默认值
$stateProvider
.state('login',{
url:'/login',
template:'<login></login>'
}) //这里配置路径,上面这种写法是调用指令
.state('info.emp',{
url:'emp',
controller:'empCtrl',
templateUrl:'info/emp/emp.html'
}) //下面这种写法是调用控制器controller,引用外部模板文件
//各个路径就是这样一项一项下来
//两个写法可以视具体情况采用
})
5.配置好config.js文件后,需要哪个模块就配置哪个模块,每个需要配置的是 模块名,控制器或指令等

AngularJS插件的封装;
就是封装指令
Angular的作用区域;
Angular 的作用域机制:与js一致,存在全局作用域($rootscope)和局部作用域($scope),当创建一个指令或者控制器时,angular会用$injector创建一个新的作用域,但是在指令或控制器运行的时候才传递进去。
$rootscope是顶层作用域,最接近于全局对象,与ng-app是绑定的,它身上可以绑定整个应用都需要的属性和方法,所有的子作用域$scope都能访问
$scope是局部作用域,他身上绑定当前指令或控制器的属性和方法,它是view和model之间的桥梁,在其他指令和控制器是不能访问该$scope
指令或控制器之间的通信:添加一个父级指令或控制器

Angular的工厂模式;
有两种方法来创建服务。1,工厂 2,服务
1,工厂
var mainApp = angular.module("mainApp", []);
mainApp.factory('MathService', function() {
var factory = {};
factory.multiply = function(a, b) {
return a * b
}
return factory;
});
服务
mainApp.service('CalcService', function(MathService){
this.square = function(a) {
return MathService.multiply(a,a);
}
});

Angular的服务的作用是什么
提供某个特定的功能,是一个独立的模块:如定时器$interval, 交互 $http, 路由 $state
AngularJs中view和controller是什么;
ng-view 和 ui-view 都是实现路由跳转,改变ui界面
Controller:控制器是一个函数,用来向视图的作用域中添加额外的功能,因为其本身的局部作用域,所有的数据和方法可以绑定在它内部的$scope上,所以它可以将一个独立的视图相关的业务逻辑封装到一个容器里。
AngularJs中的依赖注入;
依赖注入:程序运行过程中,如需另一个对象协作(调用它的方法、访问他的属性)时,无须在代码中创建被调用者,而是依赖于外部容器的注入
调用者不用关心被调用的对象声明周期,创建,销毁等,只需要直接使用,大大的降低了耦合性,提高了代码灵活性
每一个AngularJS应用都有唯一一个$injector注入器,当应用初始化的时候它被创造出来,用于注入服务
Angular和jquery的区别,分别在什么时候用合适;
1,NG是一款前端MVC框架,提供打造web应用全面的功能;JQ是一个库,封装了很多功能,我们调用JQ里的API去实现 一些功能
2,NG需要考虑整个应用的架构,作为单页面的富客户端应用程序,JQ只是提供对DOM的包装和页面的渲染。
Angular存在性能问题,但是双向数据绑定非常实用,主要用于性能要求不高的页面,如后台管理系统
JQ 使用他人的插件、考虑兼容性、节点选择比较复杂、某些方法你不会实现的时候。
Angular有没有兼容性问题;
Angular1.2及以下版本兼容IE8,以后的版本不再兼容IE8
怎么在angularJs操作jQuery;
在根文件HTML里引入 JQuery,但是JQuery或者Zepto或争抢angular的$符号,需要进行处理
AngularJs怎么实现双向数据绑定;
Ng-model $scope等
Angular中的$apply的作用是什么;
主动触发 $digest事件轮循
Angular初始化闪烁问题,怎么进行优化、
Angular的引入位置

转载于:https://www.cnblogs.com/zz-zrr/p/9678441.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值