добавить JavaScript на страницу или во внешний файл JavaScript

Возможный дубликат:
Когда следует использовать встроенный или внешний Javascript?

У меня есть некоторые переменные javascript, которые я использую в своем javascript (например, внешние файлы javascript)

Эти переменные javascript зависят от страницы и зависят от страницы и пользователя.

Лучше ли иметь их в любом другом файле javascript, означающем дополнительный HTTP-запрос, или включать его в html-контент страницы, раздувая страницу.

Мне нравится разделение, но я хочу сделать все для максимальной производительности, поэтому либо увеличиваю размер html-страницы, либо добавляю http-запрос.

Я задаю этот вопрос с точки зрения производительности / оптимизации.

Мнения по этому поводу, пожалуйста?


person amateur    schedule 02.07.2011    source источник


Ответы (3)


Вы можете сделать это несколькими способами. Один из способов - включить данные в объект, включенный в ваш основной скрипт, и разместить еще один объект на странице. Что-то типа

var data = {
 "page1": {
  "title": "blah"
 },
 "page2": {
  "title": "different blah",
  "users": [...]
 }
}

В качестве альтернативы вы можете использовать загрузчик конфигурации. на каждой странице html включить

<script src="loader.js" type="text/javascript"></script>

Что будет содержать что-то вроде этого

// if the page was blog.html page would equal blog
var page = window.location.href.match(/\/(\w+).html/)[1];
var s = document.createElement("script");
s.src = "/path/to/javascript/" + page + ".js";
s.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(s);

Это может загружать любые дополнительные данные, необходимые для конкретной страницы, и, если это сделано в самом начале, будет работать вместе с в основном библиотеками, эквивалентными onReady, например

jQuery(function() {
 doStuff();
})

Чтобы этот метод работал, вам просто нужно убедиться, что данные в каждом файле единообразны в том, что они содержат.

var pageData = { ... };

Эти два метода должны дать вам немного времени на размышления при поиске решения.

person Morgan ARR Allen    schedule 02.07.2011

у вас может быть 2 версии вашего приложения для разработчиков и выпуск.
В вашей версии для разработчиков количество скриптов не важно, тогда как выпуск версия должна быть оптимизирована путем объединения всех скриптов в один, минимизации и сжатия.

person gion_13    schedule 02.07.2011
comment
Переменные javascript различаются для каждого пользователя, поэтому этот подход не работает - person amateur; 02.07.2011

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

person jfriend00    schedule 02.07.2011