![Page 2: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/2.jpg)
МЕТАПОИСК
![Page 3: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/3.jpg)
ПРИЛОЖЕНИЕ
![Page 4: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/4.jpg)
ПРИЛОЖЕНИЕ• единый codestyle
• одинаковый функционал
![Page 5: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/5.jpg)
RAW JS• 20k SLOC
• 10+ custom components
• custom AMD
• 72 h/f
![Page 6: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/6.jpg)
BACKBONE• 15k SLOC
• weak modules
• 60 h/f
![Page 7: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/7.jpg)
ANGULAR JS• 5k SLOC
• DI
• 4 h/f
![Page 8: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/8.jpg)
EMBER JS• beta
![Page 9: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/9.jpg)
ANGULAR JS
![Page 10: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/10.jpg)
ANGULAR JS
![Page 11: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/11.jpg)
ANGULAR JS
![Page 12: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/12.jpg)
ANGULAR JS
![Page 13: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/13.jpg)
FIRST BUGS
![Page 14: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/14.jpg)
FIRST BUGS
![Page 15: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/15.jpg)
SECOND BUGS
![Page 16: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/16.jpg)
ИНТЕГРАЦИЯ
![Page 17: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/17.jpg)
INTEGRATION
<script> (function(){ //… }());</script>
![Page 18: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/18.jpg)
INTEGRATION
angular.element(document).ready(function() { angular.bootstrap(document, ['myApp']); });
![Page 19: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/19.jpg)
ПЕРЕНОСИМОСТЬ
![Page 20: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/20.jpg)
MODULE SYSTEM
angular.module('myApp', []) .controller('MyController', ['$scope', function ($scope) { $scope.greetMe = 'World'; }]);
![Page 21: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/21.jpg)
ГИБКОСТЬ
![Page 22: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/22.jpg)
$COOKIESTORE
![Page 23: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/23.jpg)
NGROUTE
$routeProvider .when('/searches/new', templateUrl: 'empty.html' controller : 'EmptyController' ) .when('/', templateUrl: 'empty.html' controller : 'EmptyController' ) .when('/:encoded_search', templateUrl: 'search_results.html' controller : 'SearchResultsController' reloadOnSearch: false )
![Page 24: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/24.jpg)
NGROUTE
![Page 25: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/25.jpg)
SOLUTION• использовать форк
• патчи в исходном коде
• постоянный мониторинг обновлений
![Page 26: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/26.jpg)
DATA-BINDING
![Page 27: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/27.jpg)
DATA-BINDING
![Page 28: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/28.jpg)
DATA-BINDING
![Page 29: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/29.jpg)
DATA-BINDING
![Page 30: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/30.jpg)
NG-REPEAT
<div ng-repeat="(key, value) in myObj"> ... </div>
![Page 31: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/31.jpg)
NG-REPEAT• 5000 билетов
• 200 значений на билет
• 1 000 000 (миллион) watchers
![Page 32: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/32.jpg)
MOAR!!! DATA-BINDING
![Page 33: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/33.jpg)
QUICK-NG-REPEAT TO THE RESCUE
<div quick-ng-repeat=«(key, value) in myObj"> ... </div>
![Page 34: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/34.jpg)
QUICK-NG-REPEAT• $watchCollection -> $watch
• $digest hack
• handmade updates
![Page 35: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/35.jpg)
КУДА НАМ ПЛЫТЬ
![Page 36: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/36.jpg)
ANGULAR JS
• внутренние интерфейсы (аналитика, админки)
• B2B
• прототипы
![Page 37: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/37.jpg)
WTF?
![Page 38: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/38.jpg)
REACT JS
• stateful-приложение
• сложный DOM
• критичные к производительности приложения
![Page 39: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/39.jpg)
CLOJURESCRIPT
• сверхкритичные к скорости приложения
• некритичные к размеру
• команда выше среднего
![Page 40: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/40.jpg)
HANDMADE
• размер приложения критичен
• нужны низкоуровневые оптимизации
• команда выше среднего
![Page 41: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/41.jpg)
Handmade (размер)
AngularJS (скорость разработки)
Clojurescript (производительность)
?
![Page 42: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/42.jpg)
ВЫВОДЫ
• Стоит изначально понимать требования к проекту
• AngularJS применим, но с набором ограничений
• Иногда лучше попробовать что-то другое
![Page 43: Лучший frontend-фреймворк, и почему вы его не хотите](https://reader037.vdocuments.pub/reader037/viewer/2022102806/55a78c471a28ab2b6e8b47b0/html5/thumbnails/43.jpg)
ABOUT
АНТОН ПЛЕШИВЦЕВtwitter.com/allaud github.com/allaud
https://www.facebook.com/ant.pl.3
aviasales.ru