09.08.2015, 00:18
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
стоит ли использовать миксины для оптимизации
пишу модуль для ангуляра, у меня есть массив, который должен фильтроватся, если брать стандартный подход ангуляра, то это при каждом дайджесте нужно проверять массив на изменения, но если массив большой то явно будет что то медленное.
1. аля ангуляр, вышел описал.
2. Я думаю использовать миксины и отслеживать изменения, тогда элементы буду фильроватся при изменение массива, стоит ли использовать такой подход или меня жду большие грабли?
( что то такое https://github.com/yyx990803/vue/blo...erver/array.js )
3. Реализовать свой класс, который имеет основные методы типо push, splice, insert ( index, val ), change вызывается что бы проверить на изменения базовый массив и отфильровать элементы.
Что скажиете по этому поводу, а то я топчусь на месте не хочу выстрелить в ногу ?
поправьте кто-то название темы на "стоит ли использовать миксины для оптимизации"
Последний раз редактировалось cyber, 09.08.2015 в 00:43.
|
|
09.08.2015, 00:57
|
Профессор
|
|
Регистрация: 14.03.2012
Сообщений: 1,808
|
|
Цитата:
|
стоит ли использовать максины
|
__________________
Научу себя плохому
Последний раз редактировалось l-liava-l, 09.08.2015 в 01:00.
|
|
09.08.2015, 01:04
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
l-liava-l,
Сообщение от cyber
|
поправьте кто-то название темы на "стоит ли использовать миксины для оптимизации"
|
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.08.2015, 01:22
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
Сообщение от cyber
|
отслеживать изменения, тогда элементы буду фильроватся при изменение массива, стоит ли использовать такой подход или меня жду большие грабли?
|
Это стандартный подход в таких ситуациях, только не совсем понятно, причем тут миксины. При грамотном подходе никаких граблей тут нет.
|
|
09.08.2015, 01:29
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
Сообщение от cyber
|
Реализовать свой класс, который имеет основные методы типо push, splice, insert ( index, val ), change вызывается что бы проверить на изменения базовый массив и отфильровать элементы.
|
Так и нужно делать, это не противоречит второму пункту, только фильтр должен вызываться при каждом изменении, то есть, внутри push slice и т.д. (если нужна проверка, конечно)
UPD фильтруются только входные данные, весь массив проверять не надо каждый раз, само-собой, так как туда уже ничего лишнего не попадет по-определению.
Последний раз редактировалось javaQest, 09.08.2015 в 01:52.
|
|
09.08.2015, 01:42
|
Профессор
|
|
Регистрация: 14.03.2012
Сообщений: 1,808
|
|
Цитата:
|
у меня есть массив, который должен фильтроватся, если брать стандартный подход ангуляра, то это при каждом дайджесте нужно проверять массив на изменения, но если массив большой то явно будет что то медленное.
|
На самом деле нет, если у массива до 2000 элементов то я бы даже не заморачивался. (если ты канеш не ng-repeat-ом выводишь)
Цитата:
|
3. Реализовать свой класс, который имеет основные методы типо push, splice, insert ( index, val ), change вызывается что бы проверить на изменения базовый массив и отфильровать элементы.
|
А если изменишь важный для фильтрации параметр в одном из элементов массива то такой подход не отработает.
Если прям уж хоочется фильтровать по флагу то напиши фильтр-обертку над $filter и пусть он не массив сверят а флаг который ты ему скормишь
__________________
Научу себя плохому
|
|
09.08.2015, 02:10
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от l-liava-l
|
А если изменишь важный для фильтрации параметр в одном из элементов массива то такой подход не отработает.
|
Хм, ты прав
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
Последний раз редактировалось cyber, 09.08.2015 в 02:53.
|
|
09.08.2015, 02:14
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от javaQest
|
Так и нужно делать, это не противоречит второму пункту, только фильтр должен вызываться при каждом изменении, то есть, внутри push slice и т.д. (если нужна проверка, конечно)
|
Я имел ввиду, что не выстрелю ли я себе в ногу при таком подходе, это понятно что нужно совмещать
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.08.2015, 02:19
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от l-liava-l
|
Если прям уж хоочется фильтровать по флагу то напиши фильтр-обертку над $filter и пусть он не массив сверят а флаг который ты ему скормишь
|
мне нужно что то типо есть массив фильтров, мы проходимся по базовому массиву и каждый элемент прогоняем через фильтры все что прошло через фильтры попадает в view
var keys = Object.keys( this.filters );
this._viewList = [];
this.sourceList.forEach( function ( item ) {
if( keys.every( function ( i ) {
return this.sourceList [ keys [ i ] ] ();
}, this ) ) {
this._viewList.push ( item );
}
}, this );
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
Последний раз редактировалось cyber, 09.08.2015 в 02:53.
|
|
09.08.2015, 02:54
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
l-liava-l,я
Сообщение от l-liava-l
|
На самом деле нет, если у массива до 2000 элементов то я бы даже не заморачивался. (если ты канеш не ng-repeat-ом выводишь)
|
им и вывожу, поэтому хочу отдавать ему отфильтрованный массив который просто нужно отрисовать и в массиве может быть больше 2к элементов
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
Последний раз редактировалось cyber, 09.08.2015 в 02:57.
|
|
|
|