SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Уволь своего frontend
разработчика
http://slidesha.re/19NHpxn

@sergeymoiseev
Разрабатываете ли
вы для веба?
Пора начинать.
Теперь это просто.
Ваш frontend пишет
каждый день код на
jquery или ванильном js?
Пора избавиться от
него.
Вам не знакомы
аббревиатуры RIA и
SPA?
Время вернуть себе
frontend.
Итог 2013 года. Расцвет
MVC JS фреймворков.
http://www.funnyant.com/
choosing-javascript-mvcframework/
Backbone?
Слишком много усилий
onRender: ->
bindings = Backbone.ModelBinder.createDefaultBindings(@el, 'name')
delete bindings['resume_salary']
delete bindings['position_specialization_ids_string']
delete bindings['new_specialization_ids_string']
bindings['resume.positions.0.position.still_working'] = [
selector: '[name=position_still_working]'
,
selector: '[name=position_date_end]'
elAttribute: 'disabled'
direction: 'ModelToView'
]
bindings['resume.positions.0.position.employer.id'] = selector: '[name=position_employer_id]'
bindings['resume.positions.0.position.employer.name'] = [
selector: '[name=position_employer_id]'
elAttribute: 'data-name'
direction: 'ModelToView'
]
bindings['resume.positions.0.position.name'] = selector: '[name=position_name]'
bindings['resume.positions.0.position.date_begin'] = selector: '[name=position_date_begin]'
bindings['resume.positions.0.position.date_end'] = selector: '[name=position_date_end]'
bindings['resume.positions.0.position.industry.id'] = selector: '[name=position_industry_id]'
bindings['resume.positions.0.position.metric_size'] = selector: '[name=position_size]'
bindings['resume.positions.0.position.metric_grade'] = selector: '[name=position_grade]'
bindings['resume.positions.0.position.specialization_ids_string'] = [
Ember?
Поновее, но всё ещё слишком много
усилий.
Angular?
В самый раз?
Только если вы поняли
как его готовить.
Оставьте привычки за
дверью.
Модель это не
модель.
ngmodel=model.attribute
Keep It Simple Stupid.
Фильтры
ng-repeat = 'object in contextObjects'
От частных коллекций, к общим с фильтрацией данных.
ng-repeat = 'object in objects | objectsByContext: context'
if(trees && context && (context_id = context.id || context.template_id)) {
var tempTrees = [];
!

angular.forEach(trees, function (tree) {
if ( tree.context_percents && _.contains(Object.keys(tree.context_percents),
context_id.toString()) ) {
tempTrees.push(tree);
}
});
!

return _(tempTrees);
} else {
return _(trees);
http://jsfiddle.net/sergeymoiseev/8YsRn/
http://bit.ly/1c8nBRo
Фильтры №2
{{tree.change > 0 ? ('+' + tree.change) : tree.change}}%
От if к фильтрам при выводе данных.
{{ tree | changeByContext: context | addPlus }}%
filter('changeByContext', function(){
return function(tree, context) {
if ( context && context.id ) {
if (tree.old_context_percents) {
var result = tree.context_percents[context.id.toString()] tree.old_context_percents[context.id.toString()];
!

return result;
}
} else {
return tree.percent_change;
}
http://jsfiddle.net/sergeymoiseev/tCGY5/
http://bit.ly/1cTgBbW
http://ngauthier.com/2013/04/learning-angular-on-rails.html
http://bit.ly/19Np9Ej
Bower
CSS анимации
.competence
@include transition (border 1.0s ease-in-out)
white-space: nowrap
padding: 5px
margin: 5px
border: solid 2px rgba(250, 92, 93, 0.2)
border-radius: 5px
float: left
z-index: 1
cursor: pointer

!
&.ng-enter
@include animation(bounceIn 1s)

!
&.ng-leave
@include animation(bounceOut 1s)
•

SASS http://sass-lang.com/

•

Bourbon http://bourbon.io/

•

Animate.css https://daneden.me/animate/
http://jsbin.com/usaruce/3/edit
http://bit.ly/JteLXs
http://www.divshot.com/blog/tips-and-tricks/angular-1-2-andanimate-css/
http://bit.ly/1iiKv0M

http://www.yearofmoo.com/2013/08/remastered-animation-inangularjs-1-2.html
http://bit.ly/1jKXR7M
Bonus track
http://d3js.org/
http://jsfiddle.net/sergeymoiseev/2PY3M/
http://bit.ly/19juiDq

Weitere ähnliche Inhalte

Ähnlich wie Fire your front end

Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupTimophy Chaptykov
 
Yii2
Yii2Yii2
Yii2Noveo
 
react-native
react-nativereact-native
react-nativewtfil
 
Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupTimophy Chaptykov
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Асинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCАсинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCEugene Agafonov
 
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17MoscowJS
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroIgor Izraylevych
 
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013Dmytro Zharii
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evroneit-people
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияArseny Zarechnev
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptAlexey Ivanov
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10OdessaFrontend
 

Ähnlich wie Fire your front end (20)

Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать Makeup
 
Yii2
Yii2Yii2
Yii2
 
react-native
react-nativereact-native
react-native
 
Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать Makeup
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Асинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCАсинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVC
 
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17
"Ractive.js — реактивные усы!" Ефим Соловьев, MoscowJS 17
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
 
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
 
За пределами PageObject
За пределами PageObjectЗа пределами PageObject
За пределами PageObject
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложения
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей Солодовников
 
Being SOLID
Being SOLIDBeing SOLID
Being SOLID
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
 

Fire your front end