45

Optimizing AngularJS Application

Embed Size (px)

DESCRIPTION

Optimizing AngularJS Application, that include with some useful best practices to in AngularJS. The best practices defined here is well stablished in Angular team itself and developers in community.

Citation preview

Page 1: Optimizing AngularJS Application
Page 2: Optimizing AngularJS Application

Md.  Ziaul  Haq  Sr.  JavaScript  Developer  oDesk  Inc.    @jquerygeek    

Page 3: Optimizing AngularJS Application

¡ What  &&  Why  

 

Page 4: Optimizing AngularJS Application

¡  Identify  the  problems  

¡ The  solution  with  best  practices  

¡ Few  more  best  practices      

Page 5: Optimizing AngularJS Application
Page 6: Optimizing AngularJS Application
Page 7: Optimizing AngularJS Application

¡ Network  related  issue  

¡ Unexpected  characters    

¡ Slow  DOM  

¡ Slow  watcher    

Page 8: Optimizing AngularJS Application

¡ Minify  your  codes  

§ Use  Uglify    

Page 9: Optimizing AngularJS Application
Page 10: Optimizing AngularJS Application

¡ Write  minify  safe  code  

§ Use  Dependency  Annotation    

Page 11: Optimizing AngularJS Application

¡ Without  Dependency  Annotation   myApp.service(’myService’,

function($http){ console.log($http); });

Page 12: Optimizing AngularJS Application

¡ Without  Dependency  Annotation   myApp.service("myService",function(a){

console.log(a) });

Page 13: Optimizing AngularJS Application

¡ With  Dependency  Annotation   myApp.service(’myService’,

[‘$http’, function($http){ console.log($http); }]);

Page 14: Optimizing AngularJS Application

¡ Use  ‘ng-­‐annotate’  § https://github.com/olov/ng-­‐annotate    

Page 15: Optimizing AngularJS Application

¡ Lot  of  network  request  

§ Mostly  for  template  files  

Page 16: Optimizing AngularJS Application

¡ Cache  the  templates    

§ Use  $templateCache  service  

Page 17: Optimizing AngularJS Application

myApp.run([‘$templateCache’,

function($templateCache) {

$templateCache.put('tpls/hello.html', '<div class=\'hello\'>Hello, {{world}}!</div>’);

}]);

Page 18: Optimizing AngularJS Application

¡ For  grunt  §  https://github.com/karlgoldstein/grunt-­‐html2js    

¡ For  gulp    §  https://github.com/fraserxu/gulp-­‐html2js    

Page 19: Optimizing AngularJS Application
Page 20: Optimizing AngularJS Application

¡ Template  tag  {{  }}  in  landing  page  

Page 21: Optimizing AngularJS Application

� Hide  the  body/some  element,  till  bootstrap  angular    

� Use  ng-­‐cloak

Page 22: Optimizing AngularJS Application

<Style> [ng-cloak] { display: none; }

</style>

<body ng-cloak>

Page 23: Optimizing AngularJS Application

▪  Hide  individual  expressions    ▪  Use  ng-­‐bind    <span ng-bind=”data.value”> </span>  

Page 24: Optimizing AngularJS Application

¡  https://builtwith.angularjs.org/    

Page 25: Optimizing AngularJS Application

¡ Repeating  manipulation  

Page 26: Optimizing AngularJS Application

¡ Optimize  ng-­‐repeat    

§ Use  the  track  by  syntax    

<li ng-repeat=” item in data.items track by item.id ”> </li>

Page 27: Optimizing AngularJS Application

¡ Use  bind-­‐once  

<li ng-repeat=” item in ::data.items"> {{::item.title}} </li>

Page 28: Optimizing AngularJS Application

 

¡ Filter  in  controller,      not  in  ‘ng-­‐repeat’  

Page 29: Optimizing AngularJS Application
Page 30: Optimizing AngularJS Application

¡ Do  you  need  $watch?  

¡ Use  unWatch  

¡ Keep  $watch  smaller  and  focused  

¡ Avoid  loop  in  $watch  

Page 31: Optimizing AngularJS Application

¡ Avoid  deep  comparison   $scope.user = {

id: grrey, name: Gandaf Grey, email: [email protected]

} $scope.$watch('user', function(newUser) {

//... }, true);  

Page 32: Optimizing AngularJS Application

¡ Keep  filter  simple  with  single  task  

¡ Use  bind-­‐once  

¡ Keep  less  item  in  ng-­‐repeat  

Page 33: Optimizing AngularJS Application
Page 34: Optimizing AngularJS Application
Page 35: Optimizing AngularJS Application

¡ Bootstrap  Angular  app  § Angular-­‐seed  https://github.com/angular/angular-­‐seed    

§ Angular-­‐funhttps://github.com/CaryLandholt/AngularFun  

Page 36: Optimizing AngularJS Application

¡ Separate  the  business  logic    § Controller  ▪ Manipulate  DOM  in  Controller  Directives  

▪ Commonly  used  functions  as  service.    

▪ Use  $emit,  $broadcast  or  $on  to  

communicate  with  other  controller.    

Page 37: Optimizing AngularJS Application

¡ Separate  the  business  logic    § Service  ▪ Should  not  refer  DOM  

▪ All  business  login  in  service  

Page 38: Optimizing AngularJS Application

§ Directive  ▪ DOM  manipulations  must  in  directives    

▪ Use  scope  instead  of  $scope  in  link  

▪ Isolated  scope  for  reusable  components.  

▪ Custom  prefix  to  avoid  conflict  

▪ Don’t  use  ‘ng’  and  ‘ui’  as  prefix.  

Page 39: Optimizing AngularJS Application

 

§ Use  of  Directive  ▪ Use  ‘data’  prefix  for  valid  HTML    �<div data-my-directive> </div>

Page 40: Optimizing AngularJS Application

¡ Choose  the  better  one    

§ Use  promises  ($q)  instead  of  old  

callbacks.  

§ Use  ngIf  instead  of  ngShow  &  ngHide  

Page 41: Optimizing AngularJS Application

¡ Choose  the  better  one    

§ Use  ng-­‐src  instead  of  src=“{{  }}”    

§ Use  ng-­‐href  instead  of  href=“{{  }}”    

Page 42: Optimizing AngularJS Application

¡ Avoid  old/jQuery  habit  § $timeout  instead  of  setTimeout  

§ $interval  instead  of  setInterval  

§ $window  instead  of  window  

§ $document  instead  of  document  

§ $http  instead  of  $.ajax  

Page 43: Optimizing AngularJS Application

¡  https://docs.angularjs.org/  ¡  https://github.com/mgechev/angularjs-­‐style-­‐guide  

¡  ng-­‐book  

   

Page 44: Optimizing AngularJS Application

   

Page 45: Optimizing AngularJS Application

   

   Thanks,  all.  J      

Drop  me  a  line  if  more  question  jquerygeek@elance-­‐odesk.com