Лучший frontend-фреймворк, и почему вы его не хотите

43
ГРЯЗНЫЕ ПОДРОБНОСТИ ЖИЗНИ С ANGULARJS Антон Плешивцев aviasales.ru

Upload: codefest

Post on 16-Jul-2015

893 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Лучший frontend-фреймворк, и почему вы его не хотите

ГРЯЗНЫЕ ПОДРОБНОСТИ ЖИЗНИ С ANGULARJSАнтон Плешивцев

aviasales.ru

Page 2: Лучший frontend-фреймворк, и почему вы его не хотите

МЕТАПОИСК

Page 3: Лучший frontend-фреймворк, и почему вы его не хотите

ПРИЛОЖЕНИЕ

Page 4: Лучший frontend-фреймворк, и почему вы его не хотите

ПРИЛОЖЕНИЕ• единый codestyle

• одинаковый функционал

Page 5: Лучший frontend-фреймворк, и почему вы его не хотите

RAW JS• 20k SLOC

• 10+ custom components

• custom AMD

• 72 h/f

Page 6: Лучший frontend-фреймворк, и почему вы его не хотите

BACKBONE• 15k SLOC

• weak modules

• 60 h/f

Page 7: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS• 5k SLOC

• DI

• 4 h/f

Page 8: Лучший frontend-фреймворк, и почему вы его не хотите

EMBER JS• beta

Page 9: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS

Page 10: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS

Page 11: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS

Page 12: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS

Page 13: Лучший frontend-фреймворк, и почему вы его не хотите

FIRST BUGS

Page 14: Лучший frontend-фреймворк, и почему вы его не хотите

FIRST BUGS

Page 15: Лучший frontend-фреймворк, и почему вы его не хотите

SECOND BUGS

Page 16: Лучший frontend-фреймворк, и почему вы его не хотите

ИНТЕГРАЦИЯ

Page 17: Лучший frontend-фреймворк, и почему вы его не хотите

INTEGRATION

<script> (function(){ //… }());</script>

Page 18: Лучший frontend-фреймворк, и почему вы его не хотите

INTEGRATION

angular.element(document).ready(function() { angular.bootstrap(document, ['myApp']); });

Page 19: Лучший frontend-фреймворк, и почему вы его не хотите

ПЕРЕНОСИМОСТЬ

Page 20: Лучший frontend-фреймворк, и почему вы его не хотите

MODULE SYSTEM

angular.module('myApp', []) .controller('MyController', ['$scope', function ($scope) { $scope.greetMe = 'World'; }]);

Page 21: Лучший frontend-фреймворк, и почему вы его не хотите

ГИБКОСТЬ

Page 22: Лучший frontend-фреймворк, и почему вы его не хотите

$COOKIESTORE

Page 23: Лучший frontend-фреймворк, и почему вы его не хотите

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-фреймворк, и почему вы его не хотите

NGROUTE

Page 25: Лучший frontend-фреймворк, и почему вы его не хотите

SOLUTION• использовать форк

• патчи в исходном коде

• постоянный мониторинг обновлений

Page 26: Лучший frontend-фреймворк, и почему вы его не хотите

DATA-BINDING

Page 27: Лучший frontend-фреймворк, и почему вы его не хотите

DATA-BINDING

Page 28: Лучший frontend-фреймворк, и почему вы его не хотите

DATA-BINDING

Page 29: Лучший frontend-фреймворк, и почему вы его не хотите

DATA-BINDING

Page 30: Лучший frontend-фреймворк, и почему вы его не хотите

NG-REPEAT

<div ng-repeat="(key, value) in myObj"> ... </div>

Page 31: Лучший frontend-фреймворк, и почему вы его не хотите

NG-REPEAT• 5000 билетов

• 200 значений на билет

• 1 000 000 (миллион) watchers

Page 32: Лучший frontend-фреймворк, и почему вы его не хотите

MOAR!!! DATA-BINDING

Page 33: Лучший frontend-фреймворк, и почему вы его не хотите

QUICK-NG-REPEAT TO THE RESCUE

<div quick-ng-repeat=«(key, value) in myObj"> ... </div>

Page 34: Лучший frontend-фреймворк, и почему вы его не хотите

QUICK-NG-REPEAT• $watchCollection -> $watch

• $digest hack

• handmade updates

Page 35: Лучший frontend-фреймворк, и почему вы его не хотите

КУДА НАМ ПЛЫТЬ

Page 36: Лучший frontend-фреймворк, и почему вы его не хотите

ANGULAR JS

• внутренние интерфейсы (аналитика, админки)

• B2B

• прототипы

Page 37: Лучший frontend-фреймворк, и почему вы его не хотите

WTF?

Page 38: Лучший frontend-фреймворк, и почему вы его не хотите

REACT JS

• stateful-приложение

• сложный DOM

• критичные к производительности приложения

Page 39: Лучший frontend-фреймворк, и почему вы его не хотите

CLOJURESCRIPT

• сверхкритичные к скорости приложения

• некритичные к размеру

• команда выше среднего

Page 40: Лучший frontend-фреймворк, и почему вы его не хотите

HANDMADE

• размер приложения критичен

• нужны низкоуровневые оптимизации

• команда выше среднего

Page 41: Лучший frontend-фреймворк, и почему вы его не хотите

Handmade (размер)

AngularJS (скорость разработки)

Clojurescript (производительность)

?

Page 42: Лучший frontend-фреймворк, и почему вы его не хотите

ВЫВОДЫ

• Стоит изначально понимать требования к проекту

• AngularJS применим, но с набором ограничений

• Иногда лучше попробовать что-то другое

Page 43: Лучший frontend-фреймворк, и почему вы его не хотите

ABOUT

АНТОН ПЛЕШИВЦЕВtwitter.com/allaud github.com/allaud

https://www.facebook.com/ant.pl.3

aviasales.ru