кстати, я так понимаю все выборки осуществляются перебором?
тогда вот ещё одна ссылка в тему: http://javascript.ru/blog/tenshi/yavascriptovoe-dao реализация ужасная, но идеи стоит взять на заметку |
Цитата:
UPD: почитал по ссылке, у меня всё также, кроме отсутствия ключей объектов (я такие объекты называю "гибридными" за то, что они содержат сильные стороны массивов и хешей), но их реализацию я уже давно задумал добавить в версию 4 своей либы, вместе с поддержкой воркеров. Ты бы почитал мануал на моем сайте, чтобы лучше понять, что же я сделал :) И я совсем не против объективных и трезвых советов. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
> у меня всё также
как же создаются ключи? > Речь не о трансформации, а о фильтрации и группировке. одним словом это - выборка данных > Я знаю инструмент, который позволяет эффективно выполнить оба процесса в условиях большого высоконагруженного проекта. что же это за волшебное средство? > Модель всё равно вернёт data-ориентированные данные модель представления вернёт вью ориентированные данные. это яваскрипт, используй > "У меня" будет один шаблон, один запрос и две фильтрации. Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds. |
Цитата:
И не забывай, что мой фреймворк можно юзать, как простой фреймворк данных (новые методы работы с массивами и объектами) или абстрактно представлять как некоторую БД, как удобнее и лучше должен решать сам разработчик.
// Все чётные элементы увеличить на 1 (вместо строковых сокращений функций моно юзать простые функции)
$C([1,2,3,4,5,6,7]).forEach(':data[i]++', ':el % 2 == 0');
Сейчас есть проблемы при тупом переборе более 10к элементов за раз, но после внедрения воркеров я думаю проблема исчезнет (в рамках клиентских задача вряд ли будут коллекции по 10кк элементов). |
Цитата:
Цитата:
Цитата:
<?xml version="1.0" encoding="UTF-8"?>
<ten:root xmlns:ten="TEN" xmlns="http://www.w3.org/1999/xhtml">
<!-- Один шаблон для списка пользователей, может лежать в отдельном файле -->
<ten:block name="user-list">
<ul>
<ten:each array="this" item="user">
<li><ten:echo data="user.name" /></li>
</ten:each>
</ul>
</ten:block>
<!-- Одна выборка всех пользователей. Если бы нам потребовались только совершеннолетние, в методе getUsers можно реализовать параметры fromAge и toAge. Пример приводить не буду -->
<ten:async method="getUsers" arguments="userList">
<ten:context object="new Collection(userList)">
<!-- Первый список, первая фильтрация -->
<ten:render block="user-list" context="this.get(':el.age < 18')" />
<!-- Второй список, вторая фильтрация -->
<ten:render block="user-list" context="this.get(':el.age >= 18')" />
</ten:context>
</ten:async>
</ten:root>
Ну и сама разметка списка может быть кастомизирована для каждого конкретного случая. В итоге: Цитата:
Такой подход используется и в XSL. |
> АПИ для этого есть
где про него почитать? > $C([1,2,3,4,5,6,7]).forEach(':data[i]++', ':el % 2 == 0'); не убедительно
[1,2,3,4,5,6,7].map(fucntion( val ){ return ( el % 2 ) ? el : el + 1 })
> после внедрения воркеров я думаю проблема исчезнет и куда же она денется? вместо использования ключей для быстрой выборки, ты выносишь перебор в асинхронную задачу, превращая клиентский код в лапшу из колбэков. |
Цитата:
Цитата:
Цитата:
Я не навязываю стратегию решения задачи, разработчик сам решает что и как ему сделать. Тебе не нравится моя либа, т.к. ты писал свой велосипед, который никому кроме тебя не нужен, более того судя по кол-ву комментов люди даже не поняли, что ты хотел написать, у тебя нет ни доки ни мана, даже ссылка битая, о чём тут ещё говорить? |
> Ты не поверишь, XSLT.
ты прав, не поверю. открой для себя хотябы двухпроходной xslt - это классно. на первом проходе делаем reduce данных от серверов, формируя модель представления. на втором - накладываем вёрстку. в качестве бонуса - возможность в любой момент посмотреть какая формируется модель - для дебага куда полезней, чем копаться в мешанине html-тегов. > Привет, копипаста моделей. она в любом случае будет. вопрос лишь в том, вносить ли в эту копипасту ещё и шаблоны или нет. к тому же не забывай про агрегацию и наследование, которые в js-моделях использовать куда проще, чем в шаблонах. |
> Один шаблон для списка пользователей, может лежать в отдельном файле
замечательно, тут ты рендеришь модель отображения > Одна выборка всех пользователей. Если бы нам потребовались только совершеннолетние, в методе getUsers можно реализовать параметры fromAge и toAge. Пример приводить не буду а тут формируешь две модели и рендеришь их. то же самое на js могло бы выглядеть проще:
var AllUsersModel= Model( function ( userList ){
var model= { mature: [], amature= [] }
userList.forEach( function( user ){
model[ ( user.age >= 18 ) ? 'mature' : 'amature' ].push( user )
}
return model
} )
AllUsersModel( userList ).renderTo( place )
|
| Часовой пояс GMT +3, время: 13:20. |