Transcript
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    

 


Recommended