Писать велосипеды это хорошо и полезно.
Но я все равно хочу обратить внимание, на замечательную библиотеку linq.js (как можно догадаться порт LINQ на JavaScript).
Позволяет делать с массивами данных все то же, что умеет оригинальный LINQ, т.е. выбрать данные любой вложенности по запросу любой сложности, отсортировать их по любому количеству полей и еще много всего.
Вы можете оценить возможности библиотеки посмотрев код из документации.
Кроме того, вы пишете в статье про translate3d, а сами все равно используете на странице position:absoulte + left.
Или вы сайт вашей студии привели в качестве отрицательного примера «Как не надо делать параллакс»?
Заголовок: «Высокопроизводительный JavaScript-параллакс»
Половина комментариев, про то, как дико оно тормозит (у меня, собственно, такая же ситуация).
Автор, где обещанные 30fps?
Во первых вы опоздали года на три) Уже давно есть Foursquare, и даже отечественный аналог AlterGeo и миллион их клонов.
Во вторых — это худший «пресс-релиз», который я когда-либо видел.
И в третьих, когда я зашел на страничку вашего приложения в google play — мне окончательно стало понятно, что с маркетингом и продвижением у вас не очень хорошо: большинство отзывов — 5 звезд, и все они очевидно куплены/накручены, все однотипные и очень плохого качества)
Оно работает именно «настолько медленно». В сложном интерфейсе, когда динамически подгружается десяток блоков со сложной версткой вы сразу почувствуете лаги, если не использовать шаблоны, data-binding, и прочие прелести современных фреймворков (knockout, backbone, angular).
Посмотрите как устроен любой сложный клиентский интерфейс, VK, Twitter и т.д
Все сообщество веб-разработчиков бьется за каждую миллисекунду и мгновенную отзывчивость интерфейса, а вы предлагаете самый худший вариант создания dom-дерева, отсюда и критика.
Вам следует указать в статье, что такой способ создания элементов черезвычайно ресурсоемкий, и подходит только для создания небольшого количества элементов, и уж точно его нельзя использовать в цикле, раз уж ваша статья предназначена для новичков.
Строить DOM создавая отдельно каждый элемент — это удар по производительности.
Первый пример из статьи будет работать в 10-100 раз быстрее, особенно в цикле.
Конечно так складывать строчки не очень красиво, зато работает быстро.
Ну и конечно никто не запрещает использовать шаблоны для построения DOM, хотя бы тем же jQuery.tmpl
Задумка очень интересная. Раз уж расширять возможности языка и упрощать синтаксис — было бы удобно писать анонимные функции в стиле C#, без слова function и оператора return, когда в нем нет необходимости:
x => x*x;
(y, z) => y*z;
Кроме того в JS иногда очень не хватает типов-перечислений (Enum), было бы удобно не задавать значения без необходимости:
С JS приходится не думать, а гадать — что же вам туда передадут.
Теоретически, если бы у JS появилась типизация входных параметров в функции — чем бы это понизило гибкость?
function Render(param:iRenderable, key:Number){
...
}
Да, придется использовать интерфейсы, но зато автокомплит и автоматическая проверка на тип аргумента.
Вы совершенно правы, просто другого слова для обозначения этой сущности нет.
Интерпретатор конечно исполняет код в один поток.
Но «потоки в js» есть в том смысле, что при возникновении ошибки во время выполнения — останавливается только тот поток, в котором ошибка, а остальные работают нормально.
Кроме того, в общем случае не рекомендуется объявлять переменные без ключевого слова var.
Например в функции controller вы выносите переменную item в глобальную область видимости.
Почему вы обращаетесь к свойствам вашего FilesUploader через this?
Когда вы вызываете функцию controller по таймауту this.maxThreads будет undefined, т.к. this уже не указывает на объект FilesUploader.
А в случае, когда надо вызывать функцию через определенный интервал используют setInterval, а не рекурсивно setTimeout.
Извините, что сразу критика, просто возникает множество вопросов:
Странно, что мы не можем настроить сервер таким образом, чтобы он не отдавал 503, и пытаемся «не забивать канал», делая проверку на клиенте, а не на сервере. По мне так это очень плохой костыль.
Странно, что мы считаем объем загружаемых файлов, а не скорость загрузки. Мы вроде хотим «не забивать канал»?
Кроме того имена переменных deley и fStek довольно сильно режут глаз.
неверное
и вместо
написать
Для любителей jQuery, есть многофункциональный метод $.proxy.
А то что указано как «решение» в статье, выглядит, имхо, немного странно.
Но я все равно хочу обратить внимание, на замечательную библиотеку linq.js (как можно догадаться порт LINQ на JavaScript).
Позволяет делать с массивами данных все то же, что умеет оригинальный LINQ, т.е. выбрать данные любой вложенности по запросу любой сложности, отсортировать их по любому количеству полей и еще много всего.
Вы можете оценить возможности библиотеки посмотрев код из документации.
Или вы сайт вашей студии привели в качестве отрицательного примера «Как не надо делать параллакс»?
Половина комментариев, про то, как дико оно тормозит (у меня, собственно, такая же ситуация).
Автор, где обещанные 30fps?
Во вторых — это худший «пресс-релиз», который я когда-либо видел.
И в третьих, когда я зашел на страничку вашего приложения в google play — мне окончательно стало понятно, что с маркетингом и продвижением у вас не очень хорошо: большинство отзывов — 5 звезд, и все они очевидно куплены/накручены, все однотипные и очень плохого качества)
Посмотрите как устроен любой сложный клиентский интерфейс, VK, Twitter и т.д
Все сообщество веб-разработчиков бьется за каждую миллисекунду и мгновенную отзывчивость интерфейса, а вы предлагаете самый худший вариант создания dom-дерева, отсюда и критика.
Первый пример из статьи будет работать в 10-100 раз быстрее, особенно в цикле.
Конечно так складывать строчки не очень красиво, зато работает быстро.
Ну и конечно никто не запрещает использовать шаблоны для построения DOM, хотя бы тем же jQuery.tmpl
Задумка очень интересная. Раз уж расширять возможности языка и упрощать синтаксис — было бы удобно писать анонимные функции в стиле C#, без слова function и оператора return, когда в нем нет необходимости:
Кроме того в JS иногда очень не хватает типов-перечислений (Enum), было бы удобно не задавать значения без необходимости:
Теоретически, если бы у JS появилась типизация входных параметров в функции — чем бы это понизило гибкость?
Да, придется использовать интерфейсы, но зато автокомплит и автоматическая проверка на тип аргумента.
И ни одна JS-IDE в мире не подскажет вам методы и свойства объекта iRenderableObject.
Что уж говорить о случае, когда вы используете прототипное наследование:
И ни одна JS-IDE в мире не подскажет вам, что у объекта foo в цепочке прототипов есть метод test.
Интерпретатор конечно исполняет код в один поток.
Но «потоки в js» есть в том смысле, что при возникновении ошибки во время выполнения — останавливается только тот поток, в котором ошибка, а остальные работают нормально.
Например в функции controller вы выносите переменную item в глобальную область видимости.
Почему вы обращаетесь к свойствам вашего FilesUploader через this?
Когда вы вызываете функцию controller по таймауту this.maxThreads будет undefined, т.к. this уже не указывает на объект FilesUploader.
А в случае, когда надо вызывать функцию через определенный интервал используют setInterval, а не рекурсивно setTimeout.
Странно, что мы не можем настроить сервер таким образом, чтобы он не отдавал 503, и пытаемся «не забивать канал», делая проверку на клиенте, а не на сервере. По мне так это очень плохой костыль.
Странно, что мы считаем объем загружаемых файлов, а не скорость загрузки. Мы вроде хотим «не забивать канал»?
Кроме того имена переменных deley и fStek довольно сильно режут глаз.