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的引入位置瀏覽器