jQuery/JS для различных страниц - лучший способ сделать это?

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

В данный момент у меня есть сайт с, возможно, 20 + различное использование jQuery, все варьирующиеся от страницы до страницы. Я просто задаюсь вопросом, что лучший способ состоит в том, чтобы сохранить этот код?

  • Все в одном большом jquery.myfunctions.js файле? И проверьте, существует ли элемент для каждого оператора?
  • Встроить теги script в каждую отдельную страницу?
  • Используйте PHP для поставки другого содержания в теги script отчасти как вышеупомянутое?
  • Разделить .js файлы на страницу? IMS мне не нравится звук этого вообще

Честно говоря, я даже не уверен, делает ли jQuery это для Вас, таким образом, он должен хорошо иметь несколько $('#whatever').function() загруженный на каждую страницу без каких-либо значимых проблем производительности?

Совет относительно этого был бы фантастическим, вероятно, глупый вопрос, но я хочу сделать вещи 'надлежащим' путем, Вы знаете?

Спасибо :-)

5
задан Nick 4 March 2010 в 21:07
поделиться

3 ответа

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

Что касается кодирования, я могу писать фрагменты кода в разных файлах, которые я создаю как один файл для производства.

Таким образом, весь ваш код будет доступен в любое время.

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

Например:

myObject = { 
    myFunctionForArticles : function(){ $('.article').each(...); },
    myFunctionForCategories : function(){ ... }
};

И в разделе «Статья»:

<script type="text/javascript">
    myObject.myFunctionForArticles();
</script>

Убедитесь, что ваш включенный javascript остается очень тонким и общим. Несколько лайнеров, вызывающих общую функцию, могут привести к проблемам. Теоретически это не лучшая практика. Выберите то, что, по вашему мнению, является правильным балансом между аккуратностью и простотой обслуживания (если у вас мало представлений, возможно, вы можете создать вместе с одним большим файлом, содержащим все тяжелые вещи, несколько коротких и конкретных файлов js, которые вызываются только правильное представление для запуска правильных функций во время загрузки; если у вас много представлений, возможно, включение однострочных встроенных тегов js избавит вас от необходимости поддерживать много коротких файлов).

4
ответ дан 14 December 2019 в 01:06
поделиться

Мои мысли:

  • Никогда не размещайте ничего на отдельных страницах, всегда используйте .js файлы
  • Один большой файл не использует возможности браузера загрузить больший JS файл, как скажем 3 маленьких файла на 3 разных одновременных соединениях во время критической начальной загрузки страницы, когда люди заходят на ваш сайт
  • Логически группируйте функции в различных файлах, таких как файлы для валидации, представления и вычислений, так как это облегчает обслуживание при увеличении размера файлов
  • Используйте JSMIn (Javascript Minifier) для уменьшения размера файлов http://www.crockford.com/javascript/jsmin.html
2
ответ дан 14 December 2019 в 01:06
поделиться

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

  • вообще не размещайте встроенный JavaScript на страницах - это предотвращает кеширование и лишает возможности отделять функциональность от представления
  • создавать собственное пространство имен - я как и подход DOD к нему ( http://www.dustindiaz.com/namespace-your-javascript/ ) Итак, мое пространство имен - это DG, поэтому весь мой код является частью одной глобальной переменной, называемой DG - объект, содержащий все подклассы
  • . Создайте структуру прототипа класса, в которой, если вы делаете обычные вещи с небольшой разницей между реализациями
    • , например, входя в систему на разных сайтах - вы выполнение входа в систему, но некоторые могут делать это иначе, чем другие - поэтому создайте класс-прототип, который будет обрабатывать общие функции, а затем реализуйте функции входа в систему для конкретного сайта в классах, которые наследуются от прототипа)

  • Используйте Шаблон модуля Yahoo для синглтонов, но не влюбляйтесь в него - он бесполезен, если у вас их больше одного экземпляров на страницу класса ( http://www.yuiblog.com/blog/2007/06/12/module-pattern/ )
  • используйте функцию require / import для динамического импорта javascript
  • этот необязательный, но замечательный. Мне очень нравится делать зависимости для javascript, поэтому мне не нужно включать тонну тегов script в свой код, и это действительно помогает с производительностью, поскольку большинство фреймворков, требующих / импортирующих, загружают JS по запросу , не сначала.
  • 3
    ответ дан 14 December 2019 в 01:06
    поделиться
    Другие вопросы по тегам:

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