1、AngularJs主要解決的是邏輯問題,實現數據雙向綁定,實現model和view的雙向刷新,是比較完美的html模板引擎,實現邏輯和view的分離。
2、AngularJs主要適用於單頁應用。
3、代碼結構清晰,邏輯清晰。
4、編寫的時候應該儘量少用其他庫和框架,實在不能用angular解決了在考慮使用其他庫和框架
5、controller只負責邏輯處理業務邏輯,不要在其中進行dom操作,controller的scope中的變量時可以繼承的,普通變量只能繼承,不能從子controller改變父controller的中的變量,但是如果變量是對象,那麼自controller中對變量的改變,會同時改變父controller中的變量。非父子Controller中要共享數據和函數,採用service。Controller中需要進行事件傳播採用event bus。
6、filter使用在dom上,負責對顯示的數據進行格式化;directive使用在dom上,主要用於dom操作;service主要爲其他模塊提供可注入的服務。
7、Angular的模塊使用依賴注入,定義後angular將自動加載並且加載模塊。
8、在非scope的作用域中改變scope的變量值,使用$apply()函數進行model的刷新,進而使view和model都更新。
9、最先執行的函數是config,config中只能注入constant類型和provider類型的服務,在config中主要進行一些全局配置和路由。
10、 在依賴的模塊都加載完成後會執行run,可在此函數中先行定義一些變量和數據。
11、 有多重方式定義service,其中value定義無法引入其他服務,相當於直接定義一個對象;constant定義同value,並且定義後的其中的值是不能改變的;service、factory、provider三者主要是封裝不一樣,定義的服務概念一樣。
12、 支持友好的restful風格的url,get\put\post\delete,提供resource服務來簡化資源的處理,有比較完善的promise處理方案。
13、 儘量只在directive中和controller中來使用scope,以免造成代碼的混亂。
14、 內部集成了jqlite,來進行dom的操作。
15、 模塊定義的時候注入的是模塊,controller、service等中注入的是模塊中定義的service,頁面中使用的是模塊中的filter(在dom上直接使用)、directive(在dom上直接使用)等,只有模塊注入了,才能將其內部定義的service、filter、directive注入;一般來說在app模塊定義的時候將所有模塊注入,controller、directive中一般只需要注入service,filter中不能注入。
在使用中碰到的問題:
1、對於彈出層要使用獨立地址比較複雜,比如說login是一個彈出層,但是又給它配了/login的地址,這種處理起來有些複雜
2、ng-view只能有一個,用其插件ui-angular可以實現多個nv-view
3、版本過於混亂,多個版本api有比較大的差別
4、由於其內部採用全監聽模式,每次改動一個model會更新所有的model,當model達到一定數量後,性能上有些吃力
5、對animate支持不友好,沒有完善的回調模式,animate的性能也不盡人意,有時候需要人爲的邏輯控制
6、在http中默認會去掉結尾的“/”,這個在每個版本中處理方法不一樣