Pavelbeginner, скорее всего разница будет на уровне "шума" от остальных событий происходящих в системе, при попытке замерить производительность, даже на мобильных девайсах.
Прочел вот эту статью http://habrahabr[dot]ru/post/31497/
Но она ажно за 2008 год и интересно на сегодняшний момент в каком из случаев будет быстрее работать код?
Обе анимации работают со свойством top. Проблема возникает, когда заканчивается первая анимация и начинается вторая. Поидее после окончания первой анимации значение свойства top должно быть 100px и вторая анимация должна делать переход от 100px к 200px, но на практике во время начала второй анимации происходит скачок к top:0px и от этого значения происходит переход к 200px. Почему так происходит и как заставить браузер использовать значение top, полученное после окончания первой анимации?
Прочел, что, например, операционная система знает о существование принтера. В операционной системе есть методы, которые управляют принтером, и пользовательские программы дергают эти методы, чтобы управлять принтером. Поскольку принтеров куча и все они устроены по-разному, то реализацию этих методов доверяют производителям принтеров, то есть пишут драйверы. Итого получаем, к примеру, следующую картину:
я пишу программу пользовательскую, моя программа дергает в операционной системе метод, например, для рисования 1-пиксельной зеленой точки. Операционная система находит реализацию данного метода в загруженном в память драйвере и исполняет код реализации этого метода.
Возможно я коряво описал ситуацию, вот вырезка, прочитанная мною:
Цитата:
Драйвера - это совего рода прослойка между ОС и железом [1]. Железа бывает много и разного, а ОС одна (под каждую ОС свой драйвер - так в 99% случаев с дровами). ОС знает, что конкретный тип устройства (т.е. железа) умеет делать то-то и то-то, к примеру, ОС знает, что с винта можно получить данные и записать на него данные (очень упрощаем), каждый винт (т.е. конкретный тип железа) выполняет эти действия по-своему. Разработчики ОС не могут реалтзовать все ветки поведения "записать данные" для ОС, поэтому на помощь приходят драйвера, которые уже обладают реализацие метода "получить данные" и "записать данные" для своего типа железа. ОС же только дергает за методы драйвера и передает/получет параметры/значения от них, а драйверы в свою очередь работают уже с конкретным железом под которое были написаны.
Это описание можно назвать "на пальцах" или базовым описанием принципа работы драйверов. На самом деле типов драйверов много больше и функции, которые они выполняют тоже огромного количество.
Вопросы вот по этой части из вырезки "ОС знает, что конкретный тип устройства (т.е. железа) умеет делать то-то и то-то,":
1) допустим, ОС знает о том, что принтер умеет делать 5 вещей, например, рисовать точку зеленую, рисовать красную точку и любые другие действия, к примеру.
Так вот зная это, ОС имеет 5 методов, которые дергают прикладные программы. А производители принтеров уже пишут драйвера и тем самым реализуют эти методы.
Вопрос в следующем. Поскольку ОС знает, что тип устройства "принтер" имеет 5 методов, то и хранит в себе 5 методов, которые могут дергать прикладные программы.
А что, если вдруг, завтра появится новый принтер, который помимо этих вот 5 методов умеет делать ещё что-нибудь, например, танцевать? Как в таком случае
прикладной программе дергать метод "танцевать", который умеет делать принтер, но о котором ничего не знает ОС т.к. в ней уже заложено, что для типа устройства
"принтер" есть 5 методов и всё?
2) допустим на момент выхода ОС разработчики знали обо всех типах устройств, которые существовали на момент написания ОС и заложили поддержку этих устройств в ОС.
То есть ОС знает об, например, всё том же устройстве-принтере и содержит методы для манипуляций этим устройством. А что, если после выхода ОС я изобрету своё устройство,
например, транслятор моих мыслей на бумагу. ОС ничего не знает о таком устройстве и не знает какие методы существуют для данного типа устройства. И как тогда
писать прикладные программы для управления моим устройством?
Наверняка я вообще где-то имею абсолютно неправильное представление о том, как все это устроено, поэтому, очень надеюсь, что вы наведете меня в нужное русло. Спасибо, с уважением.
Теперь я хочу регулярными выражениями найти особые классы(особые в том смысле, что имеют определенный форма, например, имеют такой вид "prefix-myClassName", а в верстке <div class="prefix-myClassName"></div>) во всех строках из массива elementsClasses.
То есть, имеется специальный префикс prefix- в начале названия особых классов и по этому преффиксу я хочу найти все такие особые классы в верстке.
А теперь сам вопрос: насколько это будет все происходить быстро, и второй вопрос, может быть вы предложите более быстрый способ, чем я описал для выполнения поставленной задачи, а именно найти все особые классы в верстке, которые имеют определенный префикс.
Понимаю, что, чем больше размер верстки - тем больше времени на парсинг и т.д.
Наверное, нужно пояснить для чего это все нужно, чтобы понять в каком смысле я имею ввиду "на сколько быстро это будет происходить".
На странице имеются блоки, например, меню, подвал, табы, таблицы и т.д. Все эти блоки имеют определенные классы, например,
Так вот js и css этих блоков привязан к классам, то есть для дива с классом prefix-tab используется css файл с названием prefix-tab.css, и js файл с названием prefix-tab.js
При первой загрузке страницы сайта никакие стили и js не грузится, только html и скрипт, который ищет все используемые блоки на странице, например, блок prefix-tab. Найдя все блоки, которые используются на странице скриптом
я подгружаю js и css файлы данных блоков и вставляю на страницу.
Надеюсь, что идея понятна. Прошу оценить на сколько игра стоит свеч, ведь если на парсинг будет уходить много времени, то прощу сразу подгружать все js и css файлы.
И да, я в курсе, что существует кэш в браузере и браузер загрузив файл один раз, хранит его в кэше. Но задача следующая: сайт планируется быть без перезагрузки страницы, то есть весь html передается ajax-ом. Плюс не должно
быть задержки из-за загрузки ресурсов при первой загрузке страницы.
Надеюсь на советы и теоретическую основу, вместа наездов. Спасибо всем, кто поделится мнением и знаниями.
Хочу отменить фон у всех элементов на странице, кроме input с типами checkbox/radio.
*:not([type="checkbox"]),
*:not([type="radio"])
{
background-color:transparent;
}
это будет работать, но вся моя идея заключается в том, что внутри метода findElement я хочу находить все элементы виджета и сохранять ссылки на эти элементы внутри экземпляра виджета, то есть в объекте.
я хочу один раз потратить время, найдя все элементы виджета(product--name, product--cost), а затем манипулировать этими элементами, не тратя времени на их поиск, как я делаю вот в этом куске кода:
$(event.currentTarget).parents('.product').find('.product--cost')
Замыкание, здорово, работает. Но есть одно неприятное для меня НО. При таком подходе, если будет, например, 1000 продуктов на странице, то ф-ция handleNameClick внутри метода onNameClick будет создана 1000 раз, то есть в памяти будет 1000 экземпляров
одной и той же ф-ции.
В общем я потратил уже не одну неделю, размышляя как же сделать правильно и максимально удобно, но не смог найти решения, которое бы устроило меня.
Может в фабрике уже давно есть решение данного момента, а я и не знаю о нем? Либо, пожалуйста, может у вас есть идеи на сей счет? Заранее благодарю.
вот тут есть немного информации. обратите внимание на async
http://learn.javascript.ru/script-place-optimize
Полной инфморации по моему вопросу, к сожалению, не нахожу.
Всё, что я на данный момент понимаю и знаю - это следующее(поправьте, пожалуйста, если есть ошибка где-нибудь):
Браузер грузит страницу, парсит сверху вниз, то есть начиная от тега <html> и заканчивая тегом </html>. Если идут теги
браузер сначала грузит файл из тега <link>(при этом построение DOM приостановлено, ожидается полная загрузка файла и его выполнение).
загрузив файл из тега link, браузер грузит файл из тега <script>(при этом построение DOM приостановлено, ожидается полная загрузка файла и его выполнение).
загрузив и выполнив файл из тега <script> браузер продолжает парсить остальной документ и строить DOM.
как только DOM будет построен и будут выполнены все скрипты, будет сгенерировано событие onDOMContentLoaded.
Это всё, что я понимаю, но хотелось бы больше, может ещё какие-нубудь статьи знаете? Спасибо.
Если верить этой статье http://learn.javascript.ru/onload-ondomcontentloaded, то браузер сначала ждет, полной загрузки файла styles.css, затем загружает script.js
1) В этой статье сказано "Браузер Opera — особый. В нём скрипты не ждут стилей. Это поведение не соответствует стандарту.". Этот момент ещё актуален на сегодняшний момент или же так было только в старых операх?
2) Допустим страница загрузилась. Далее я скриптом создаю тег link и указываю в href новый css файл NewStyles.css, и сразу после этог создаю тег script и указываю в src новый js файл NewScript.js
Что будет в этом случае. Браузер опять сначала начнет грузить css файл, полностью загрузит его, и лишь только потом загрузит js файл и выполнит его или как? То есть не может ли быть такого, что сначала браузер загрузит скрипт, выполнит его,
а только потом загрузится css файл?
3) можете дать ссылку на статью, где подробно бы описывалось всё это? Про то, как браузер грузит страницу, в каком порядке что происходит, в каком порядке какие файлы грузятся и что чего ждет, прежде чем выполниться/загрузиться?
В каком смысле всё? Например, загрузили главную страницу, на ней используются блоки socail, menu.
Затем пользователь может перейти на страницу, наример, page_products. Эта страница аяксом грузится. На этой странице есть блок products. Так вот, зачем мне при первой загрузке странице грузить стили блока products, если пользователь вдруг не захочет заходить на страницу page_products? (Добавление)
Ch_chov пишет:
Это файл скорей всего сразу попдет в кэш браузера. Поэтому пользователю не придется его скачивать каждый раз
Это я понимаю, но на работе, например, требование грузить на страницу только те стили, которые используются на странице и точка... Когда были статичные странице, то есть с перезагрузкой страницы, использовались бандлы, то есть для каждой страницы на сервере лежал css файл, в котором хранились все используемые на странице стили. Сейчас же, когда встал вопрос сайта без перезагрузки страницы, то есть все страницы грузятся ajax-ом, нужно новое решение.
лучше на ПХП, если мы знаем какая страница будет отображена, грузим соответсвующий JS и стили если нужно. Например в Yii есть целый класс CClientScript для такых целей
да, было бы здорово, если бы страница была статичной, но в моем случае все страницы сайта подгружаются ajax-ом. На сервере я не могу(конечно могу, но это куча гемороя будет, по-моему) следить за тем какие стили уже у пользователя на странице подгружены, а какие ещё нужно прислать.
А так я на сервере получаю html новой ajax присланной страницы, нахожу какие блоки(блоки в терминологии БЭМ) используются в этой верстке, проверяю не подгружены ли уже стили и js этих блоков и, если не подгружены, отправляю запрос за стилями и js-ом этих блоков.