javascript ЛУЧШАЯ ПРАКТИКА - управление сценариями / повторное использование кода - PullRequest
7 голосов
/ 12 февраля 2011

Из чтения многих статей, таких как Как включить файл JavaScript в другой файл JavaScript? - очевидно, невозможно включить один сценарий в другой.

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

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

Например, у меня может быть группа кода «профиль», которая позволяет мне управлять своим профилем, он может иметь несколькоdiv-всплывающие окна, которые используют Ajax, и в качестве примера, скажем, у меня есть пара функций, которые контролируют мой «адрес доставки», они контролируют div-pop-up, они обрабатывают специфичный для Ajaxк этой информации.- Допустим, у меня есть 4 функции для этой цели.Но это только часть гораздо большего файла 'profile.js', который обрабатывает ВСЕ из моего 'профиля' crud ...

Теперь у меня есть еще один раздел приложения - например, корзина покупок -где мне нужно разрешить пользователю доступ к всплывающему окну "адрес доставки" и всем функциям Ajax.

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

Так что , если мне остается выводить «лучшую практику» -учитывая ограничения того, как работают эти технологии - я не могу «вкладывать» и повторно использовать js, как я использую серверную часть, ИЛИ CSS.

Мой код придется разбивать на отдельные файлы, и(теоретически) будет использоваться множество файлов меньшего размера .js

Так что мои <head> будут выглядеть так

<head>
<script src='smallfile_1.js'...>
<script src='smallfile_2.js'...>
...
<script src='smallfile_10.js'...>
<head>

и "ЕСЛИ" Мне нужен раздел на другой странице

<head>
<script src='that_other_object_/smallfile_3.js'...>
</head>

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

Имеет ли 100 000 запросов на 10 файлов 5 000, ДЕЙСТВИТЕЛЬНО равных -100 000 запросов на 1 50 000 файлов?

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

Могу ли я получить некоторую обратную связь о том, что другие люди делают по поводу повторного использования кода JS между модулями - без создания "огромного" файла, разделяемого между модулями.

1 Ответ

11 голосов
/ 12 февраля 2011

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

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

Другой способ предотвратить это - создать небольшой файл на стороне сервера, который будет динамически объединять несколько JavaScript на сервере и обслуживать их, когда клиент запрашивает их, например:

<script src="/resource/js?load=file1,file2,file3" type="text/javascript></script>

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

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