Использовать подстановочный знак в атрибуте src тега <script>? - PullRequest
8 голосов
/ 17 февраля 2011

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

<%--Third Party Libraries, Plugins, Extensions --%>
<script src="Libraries/Raphael/Raphael.js" type="text/javascript"></script>
<script src="AutoComplete/jquery.autocomplete.js" type="text/javascript"></script>    
<script src="Libraries/jQuery/1.4.2/jquery.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.core.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.widget.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.mouse.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.draggable.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.droppable.js" type="text/javascript"></script>    

Не было бы неплохо, если бы я могзамените это этим ...

<%--Third Party Libraries, Plugins, Extensions --%>
<script src="Libraries/Raphael/Raphael.js" type="text/javascript"></script>
<script src="AutoComplete/jquery.autocomplete.js" type="text/javascript"></script>    
<script src="Libraries/jQuery/1.4.2/jquery.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.*.js" type="text/javascript"></script>

т.е. используйте * в качестве подстановочного знака.

Очевидно, что это JS, я мог бы просто бросить все эти сценарии в один большой сценарий и загрузитьно мне не очень нравится это делать.

У кого-нибудь еще есть методика прибавления массы ссылок на скрипты?Или мы просто живем с этим?

Ответы [ 6 ]

6 голосов
/ 17 февраля 2011

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

Браузер, по сути, должен был бы грубо форсировать ваш сервер запросами в надежде на удачу.

Я бы предложил использовать компилятор закрытия Google, чтобы объединить все похожие, если не все, файлы javascript в один файл. Это будет немного большим, но уменьшит запрос http.

С некоторым профилированием вы можете найти баланс между тем, какие файлы нужны чаще всего, и скоростью.

ОБНОВЛЕНИЕ (из комментариев)

Как правило, я неохотно предлагаю добавить новую библиотеку javascript для решения проблемы слишком большого количества библиотек javascript :) Кроме того, это выглядит как более простое решение. В настоящее время мы используем API закрытия Google, чтобы сжимать и объединять все наши JavaScript и CSS и создавать время с помощью ANT. Работает шарм. Это также можно сделать в некоторой степени напрямую с помощью виртуального хоста apache2 / htaccess (см. Html5boilerplate.com) для примеров и ограничений

2 голосов
/ 17 февраля 2011

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

$.getScript('ajax/test.js', function() {
    alert('Load was performed.');
});
2 голосов
/ 17 февраля 2011

Нет, не так, как вы думаете. Вы можете сделать что-то похожее, если вы используете загрузчики JavaScript (например, RequireJS или LabJS ), так как вы можете затем сжать каждый файл в массив и цикл через них, или, если вы чувствуете себя честолюбивым, составьте протокол между передней и задней панелями, чтобы поддержать это.

Тем не менее, это не рекомендуется, поскольку его нелегко поддерживать. Если ваша проблема с объединением файлов в один является трудоемкой, то JS minifiers (например, UglifyJS или Closure Compiler ) могут решить вашу проблему.

1 голос
/ 17 февраля 2011

т.е. используйте * в качестве подстановочного знака.

Нет.Ну, нет, если вы не хотите настроить свой сервер так, чтобы он передавал URL-адрес, который содержит символ *, через скрипт, который разрешает его и связывает все JS на лету.JS Я мог бы просто бросить все эти сценарии в один большой сценарий и загрузить его, но мне это не очень нравится.

Это хорошее решение.Как правило, вы захотите сделать это как часть сценария сборки для сайта и одновременно вызвать вызов минификатора.

0 голосов
/ 13 мая 2017

Я бы пропустил type="text/javascript"

Атрибут "type" требуется в HTML 4, , но необязательный в HTML5 .

Но я все еще думаю, что объединение src невозможно (как в HTML5 и CSS3)

0 голосов
/ 17 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...