1.Angular是什么,原理是什么,特色?
AngularJS:是一个优秀的JavaScript框架,它实质上是对HTML标签的拓展(指使标签自己具有必定的业务逻辑),是为了克服HTML在构建应用上的不足而设计的,使用它能够很容易的构建SPA(单页应用)
Web应用:提供大量的用户交互,不断更新视图又不进行url跳转
核心特性:MVC,模块化,双向数据绑定,指令,依赖注入等css
2.AngularJS以为哪部分最好用?
双向数据绑定:view的更新会致使model的更新,model更新会自动渲染view,为何最好用?在渲染页面的时候,有时候是异步操做获得的数据,你不用再担忧初始值是undefined,你只须要将$scope.xxx绑定到HTML里,当$scope.xxx取得异步操做的结果后,会自动渲染到页面上。 另外,当用户交互修改了view里的某个数据,会直接触发model更新,并再次渲染到view层,大大减小了开发的代码量
指令系统:ng-app ng-controller ng-show等,还有自定义指令,能够实现一个标签具有简单的业务逻辑,加强html
模块化开发:经过angular自己的路由和模块化的机制,很容易实现SPAhtml
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文件后,须要哪一个模块就配置哪一个模块,每一个须要配置的是 模块名,控制器或指令等node
AngularJS插件的封装;
就是封装指令
Angular的做用区域;
Angular 的做用域机制:与js一致,存在全局做用域($rootscope)和局部做用域($scope),当建立一个指令或者控制器时,angular会用$injector建立一个新的做用域,可是在指令或控制器运行的时候才传递进去。
$rootscope是顶层做用域,最接近于全局对象,与ng-app是绑定的,它身上能够绑定整个应用都须要的属性和方法,全部的子做用域$scope都能访问
$scope是局部做用域,他身上绑定当前指令或控制器的属性和方法,它是view和model之间的桥梁,在其余指令和控制器是不能访问该$scope
指令或控制器之间的通讯:添加一个父级指令或控制器jquery
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);
}
});web
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的引入位置浏览器