![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Как вообше лучше всего использовать код Java Script?
1) Включать файл с кодом в страницу (как лучше?) или включать сам код в страницу? Писать его под кожей или в черепе страницы? Если в черепе то в до или после meta-тегов? 2) Какой из атрибутов использовать в теге <script> и использовать ли вообще 3) Нужны ли? <!-- --> 4) Нужны ли квадратные скобки? И зачем их вообще используют? Это аналог п.3.? Это там, где CDATA 5) Нужно ли использовать 3 и 4 в том случае, если включен в страницу не код, а файл .js? 6) Можно ли файл включать в теле(под кожей), а не в черепе страницы? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
1) Чаще всего лучше отдельным файлом в <head>, после мета-тегов. Но это не жесткая догма, бывают случаи, когда оправданнее другие варианты.
2) type="text/javascript" для валидности в HTML 4.xx и XHTML 1.x. Для HTML5 можно не писать ничего. 3) Не нужны. Браузеры, для которых это было нужно, вымерли 12 лет назад. 4) Квадратные скобки CDATA-блоков - часть синтаксиса XML, без них XML-парсер выдаст ошибку, если в скрипте встретится знак "<" (парсер примет его за начало тега). Но эти скобки нарушают синтаксис JS, поэтому их самих приходится экранировать комментариями. Это актуально для XHTML-страниц, отдаваемых как XML. При подключении скриптов внешним файлом эти сложности не нужны. 5) Не нужно. 6) Можно. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
SelenIT, спасибо большое за полный и исчерпывающий ответ!
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Я бы посоветовал бы все скрипты без исключения вставлять перед </body></html>.
источник По поводу inline-скриптов и удаленных: тех разработчиков, которые все скрипты пишут inline (в теле страницы), можно смело расстреливать. Это убивает кеширование скриптов наповал! По поводу же удаленных скриптов, то советую склеивать все необходимые скрипты в один, чтобы в итоговом документе был только один тег <script>. Как известно, 5 маленьких картинок будут грузится больше, чем 1 большая, склеенная из этих 5ти в фотошопе. Все дело в том, что каждое http-соединение "дорого" обходится. Так же скрипты советую минимизировать (JSMin) в production-версиях. |
|||
|
||||
| Win MK 32 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Спасибо вам все за ответы! Приму к сведению.
У меня сейчас чудеса стали твориться. Представляете, вот так скрипт подгружается и успешно выполняется, но Dreamweaver CS4 его не видит:
А вот так, наоборот(скрипт не подгружается, но зато Dreamweaver подцепляет его и позволяет перейти через верхнюю строку(есть такая удобная фича в CS4)):
|
||||
|
|||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
||||
|
||||
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Dobermann, это сожаление или намек на то, что не стоит мне привыкать к таким фичам?
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
может вся канитель оттого что в дримвивере открывается файл не того уровня, что на хосте?
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Aliance, я знаком с этой рекомендацией, но сомневаюсь, что она даст радикальное ускорение загрузки по сути — что с того, что страница визуально быстро загрузится, со всеми стилями и графикой, но долго будет нефункциональна в ожидании скрипта? Причем момент задержки будет при каждой загрузке... При традиционном подключении скрипта в "голове", да, будет задержка при первой загрузке — зато при всех последующих скрипт будет мигом браться из кеша, и страница будет и красивой, и полнофункциональной. Тем более браузеры совершенствуются (ограничение в две одновременных закачки, о котором говорится в статье, давно преодолено — у новых браузеров лимит 6-8, насколько я в курсе), а IE8 и новый Webkit даже научились закачивать два скрипта параллельно. Есть неплохое исследование, советующее добавлять <script> динамически, это снимает блокировку других загрузок. Но я бы не советовал новичку начинать с такой оптимизации;) И насчет inline-скриптов: конечно, подключать так библиотеки — головотяпство, но если у нас один маленький скриптик для одной-единственной страницы (напр. элементарный валидатор конкретной формы) — рационально ли открывать на него то самое отдельное http-соединение? -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
SelenIT, ты уверен в том, что если скрипт подключается в теле документа, то задержка будет всегда, а в ином случае только при первой загрузке? Кеширование же идет для обоих случаев.
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Aliance, Запрос хидеров - "модифицирован ли этот скрипт" будет всегда. Может это имелось ввиду?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Aliance, имелось в виду состояние страницы, когда она визуально почти готова, но нефункциональна — после почти полной загрузки DOM, но до загрузки скрипта (с сервера или из кеша, после проверки last-modified, не суть важно). По моим наблюдениям, некоторых юзеров этот момент ставит в тупик. Вариант со скриптами "сверху", на мой взгляд, "честнее" — пока страница не готова, она и не видна, а если уж отрисовалась — то и ведет себя как ожидается...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Ну я вообще удивился, когда прочитал, что есть практика подключать скрипты ближе к концу html-кода
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
SelenIT, мне кажется твой второй пост немного противоречит первому.
Из первого у меня сложилось мнение, что подключать скрипты в head - это необходимость, т.к. иначе производительность 100% падает. А из второго уже, что это твое мнение и хороший тон, но никак не необходимость. Скажи, что из этого ближе к истине. Если честно, я так до конца и не понял. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Aliance, ближе второе. Плюс мое мнение, что "как бы ускорение загрузки" от вынесения скриптов в низ страницы (как советует Yahoo) — не более чем иллюзия. Для кого-то, возможно, полезная, а для кого-то (типа меня;) — и наоборот (т.к. это субъективный опыт).
А для ускорения, имхо, лучше использовать динамический элемент <script> (как советует webo.in), но только на заключительном этапе выкладки сайта, когда все прочее отлажено и проверено. Это сообщение отредактировал(а) SelenIT - 25.5.2009, 23:53 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |