Куда поместить JavaScript в файл HTML?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

202
задан Sebastian Simon 6 September 2017 в 04:37
поделиться

7 ответов

Yahoo!, который Исключительные команды Производительности рекомендуют помещающие сценарии у основания Вашей страницы из-за пути браузеры, загружает компоненты.

, Конечно, комментарий Levi "перед необходимостью в нем и только" является действительно корректным ответом, т.е. "это зависит".

171
ответ дан nickf 23 November 2019 в 05:00
поделиться

Лучшее место для него - перед необходимостью в нем и только.

кроме того, в зависимости от физического местоположения Ваших пользователей, с помощью сервиса как услуги Amazon S3 может помочь пользователям загрузить его с сервера физически ближе им, чем сервер.

действительно ли Ваш js сценарий является наиболее часто используемым lib как jQuery или прототип? Если так, существует много компаний, как Google и Yahoo, которые имеют инструменты для обеспечения этих файлов для Вас в распределенной сети.

75
ответ дан laika 23 November 2019 в 05:00
поделиться

С 100k JavaScript Вы никогда не должны помещать его в файле. Используйте внешний сценарий файл JavaScript. Нет никакого шанса в аду, Вы будете только когда-либо использовать этот объем кода только в одной странице HTML. Вероятно, Вы спрашиваете, где необходимо загрузить файл JavaScript, для этого Вы уже получили удовлетворительные ответы.

, Но я хотел бы указать, что обычно, современные браузеры принимают плетеная корзинка файлы gzip JavaScript! Просто gzip x.js файл к x.js.gz и точка к этому в эти src атрибут. Это не работает над локальной файловой системой, Вам нужен веб-сервер для него для работы. Но сбережения в переданных байтах могут быть огромными.

я успешно протестировал его в Firefox 3, MSIE 7, Opera 9 и Google Chrome. Это, по-видимому, не прокладывает себе путь в Safari 3.

Для большего количества информации, см. это сообщение в блоге , и другой очень древняя страница , которая, тем не менее, полезна, потому что это указывает, что веб-сервер может обнаружить, может ли браузер принять gzipped JavaScript, или нет. Если Ваша сторона сервера может динамично принять решение отправить gzipped или простой текст, можно сделать страницу применимой во всех веб-браузерах.

4
ответ дан bart 23 November 2019 в 05:00
поделиться

Используя cuzillion можно протестировать влияние на загрузке страницы различного размещения тегов script с помощью различных методов: встроенные, внешние, "HTML-тэги", "document.write", "элемент JS DOM", "iframe", и "оценка XHR". Посмотрите справка для объяснения различий. Это может также протестировать таблицы стилей, изображения и iframes.

3
ответ дан Sam Hasler 23 November 2019 в 05:00
поделиться

Помещение JavaScript наверху казалось бы более опрятным, но функционально, лучше для следования за HTML. Тем путем Ваш JavaScript не выполнит и попытается сослаться на элементы HTML, прежде чем они будут загружены. Этот вид проблемы часто только становится очевидным при загрузке страницы по фактическому интернет-соединению, особенно медленное.

Вы могли также попытаться динамично загрузить JavaScript путем добавления элемента заголовка от другого кода JavaScript, хотя это только имеет смысл, если Вы не используете весь код все время.

4
ответ дан Matthias Wandel 23 November 2019 в 05:00
поделиться

Ответ, зависит, как Вы используете объекты JavaScript. Как уже указано загрузка файлов JavaScript в нижнем колонтитуле, а не заголовке, конечно, улучшает производительность, но заботу нужно соблюдать, что объекты, которые используются, инициализируются позже, чем они загружаются в нижнем колонтитуле. Еще одним путем является загрузка 'js' файлы, помещенные в папку, которая будет доступна всем файлам.

1
ответ дан GustyWind 23 November 2019 в 05:00
поделиться

Как другие сказали, это должно, скорее всего, войти во внешний файл. Я предпочитаю включать такие файлы в конце < голова/>. этот метод является более человеческой товарищеской встречей, чем дружественная машина, но тот способ, которым я всегда знаю, где JS. Это просто не как читаемое для включения файлов сценария где-либо еще (по моему скромному мнению).

я действительно необходимо отжать каждый последний мс тогда, вероятно, необходимо сделать то, что заявляет Yahoo.

0
ответ дан Berserk 23 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: