2012-05-02 4 views
0

По какой-то причине я не могу объединить файлы javascript в одном файле через php, как я могу с помощью css.Объединение нескольких файлов jquery

Я хочу объединить все мои файлы javascript в одном. Однако это как-то нарушает мой код. Это как $ -значение, которое генерирует jQuery, недоступно через остальную часть кода (например, jquery ui).

Нужно ли загружать jQuery в свой собственный <script type="text/javascript" src=""></script>? И в чем же тогда причина?

Включая их в том же порядке, что и они работают в браузере.

JQuery -> JQuery UI -> JQuery пользовательские функции -> мой собственный сценарий

+0

В каком порядке их можно комбинировать? – Jivings

+0

Спасибо, обновил мой ответ. –

+1

У меня была эта проблема один раз с 1.7.3, и это как-то связано с тем, как они комментировали структурированные в начале/конце мини-скрипты. Любой код был прокомментирован или были закодированы комментарии. Это было простое исправление. Просто просмотрите свой источник и посмотрите, что происходит в начале/конце каждого скрипта. –

ответ

0

Вы можете поставить новую строку и/или точку с запятой между отдельными сценариями.
E.g. Минимизированный JQuery UI скрипт, который вы получите от https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js заканчивается

return this}})}(jQuery) 

Если теперь добавить еще один скрипт прямо позади, что вы, скорее всего, получите синтаксическую ошибку.
Давайте сырой scripts.php

<?php 
header('Content-type: Application/javascript'); 
readfile('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'); 
readfile('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js'); 

echo '$(document).ready(function() { 
    alert("hello"); 
    $("#dialog").dialog("open"); 
}); 
'; 

это не будет работать, но

<?php 
header('Content-type: Application/javascript'); 
readfile('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'); 
echo "\r\n;"; 
readfile('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js'); 
echo "\r\n;";  
echo '$(document).ready(function() { 
    alert("hello"); 
    $("#dialog").dialog("open"); 
}); 
'; 

будет.

Другие вещи, чтобы рассмотреть следующие вопросы:

  • это, вероятно, не серебряная пуля. Я выбрал «\ r \ n»; a) выйти из // комментария в последней строке и b) закрыть «открытый» оператор с помощью запятой. Но поведение с ошибкой с точкой с запятой javascript (и его реализация) может быть довольно странным (это плохая функция), и я предпочел бы «исправить» каждый отдельный скрипт вручную, чем добавить фиксированную «строку восстановления».
  • Я stronlgy в «пусть cdn, как google-хост, эти библиотеки javascript и полагаются на клиентский кеш», но без хороших доказательств в поддержку этой позиции.
+0

Я скоро посмотрю. Хорошее решение. Лично у меня иногда возникали проблемы с «пусть cdn, как google-хост, эти библиотеки javascript», потому что в редких случаях отставание на этих сайтах замедляет мой собственный сайт, и у меня был случай, когда моя антивирусная программа блокировала javascript из google url. –

+0

Да, это действительная точка. не нравится тем сайтам, которые зависают, потому что некоторые (в моем случае бесполезные) facebook api thingy не могут быть восстановлены: -/Не заметили это на googleapi cdn, хотя, опять же, с отказом от ответственности: без каких-либо обширных исследований. – VolkerK

+0

Помимо этого неплохо размещать на google, так как их серверы бывают быстрыми, а браузеру требуется меньше файлов для кэширования (если все они его используют), что также ускоряет работу. Слишком плохо, что моя антивирусная программа возмущена этим решением. –

Смежные вопросы