Как/когда/где включить внешний javascript

Я ищу несколько советов о том, как наилучшим образом сохранить функции JavaScript (jQuery).

Я развиваюсь в MVC/бритве и поэтому имею страницу макета. Здесь я включаю мою библиотеку jQuery и внешний файл JavaScript, поэтому она доступна на каждой отдельной странице.

Это хорошо работает, но теперь я полностью осознаю тот факт, что добавляю почти 300 строк JS на КАЖДУЮ страницу, где, возможно, половина из них используется на любой из этих страниц.

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

У меня есть несколько вопросов вокруг этой договоренности:

  • Является ли размещение JS внутри HTML в целом приемлемым, если используются переменные с использованием бритвы? Кажется, что нет чистого способа передачи переменной во внешний файл js
  • Должен ли я разделить свои функции на отдельные JS файлы и просто включить то, что необходимо для каждой страницы на сайте?
  • Если бы я разделил их на несколько файлов, как это работает с jQuery (document).ready? Должен ли я использовать это, если весь JavaScript, который я включаю, должен использоваться?

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

Ответы

Ответ 1

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

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

$(document).ready(function() {
    mysite.mypage();
});

Тогда функция mysite.mypage() может быть определена во внешнем JS файле. 300 строк - это не конец света, я бы сказал, что его, вероятно, слишком рано беспокоиться об оптимизации.

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

http://www.minifyjavascript.com/

Ответ 2

Вы когда-нибудь слышали о require.js? http://requirejs.org/ Мне это очень полезно.

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

Я не знаю о передаче переменной во внешний JS файл, я не думаю, что это возможно/ "правильно".

Вы можете сделать каждый внешний JS файл в функцию, которая принимает и возвращает параметры. Затем на странице вы должны использовать его: - включить файловую зависимость - вызвать функцию

То, что я делаю, похоже на ваше второе предложение.

для вопроса $(document.ready), это действительно зависит от вас. Вам не обязательно использовать его, но полезно для некоторых вещей, посмотрите этот обзор: http://docs.jquery.com/Tutorials:Introducing_ $(document).ready()