Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   оптимизация. загрузка js-файла (https://javascript.ru/forum/dom-window/65131-optimizaciya-zagruzka-js-fajjla.html)

oryth 28.09.2016 22:43

оптимизация. загрузка js-файла
 
Простите, я новичок в JavaScript. Можете ответить на вопрос
Как лучше все скрипты засунуть в один файл или в различные файлы?

Vlasenko Fedor 28.09.2016 23:39

в один файл
по возможности минимизировать http://closure-compiler.appspot.com/home
и сжать http://compressorrater.thruhere.net/
мы же разработчики используем для данных целей сборщики(плагины)
интегрированные в IDE (YUI compressor, UglifyJS ...) или включаемые в пакет разработки плагины к примеру https://learn.javascript.ru/screencast/webpack

oryth 29.09.2016 00:51

Poznakomlus,
спасибо большое, а то мне говорили, что мол лучше скрипты которые редко будут использоваться (или могут вообще не использоваться [например, если на сайте имеются различные роли доступа к функционалу]) в отдельный файл вынести.
вот если зашел пользователь у него обычная роль загружать 1 файл, а если зашел другой пользователь с ролью допустим агент, у которого больше функционала, загружать 2 файла.

Vlasenko Fedor 29.09.2016 01:46

Цитата:

Сообщение от oryth
роли доступа к функционалу

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

Яростный Меч 29.09.2016 01:50

Цитата:

Сообщение от oryth (Сообщение 430161)
Poznakomlus,
спасибо большое, а то мне говорили, что мол лучше скрипты которые редко будут использоваться (или могут вообще не использоваться [например, если на сайте имеются различные роли доступа к функционалу]) в отдельный файл вынести.
вот если зашел пользователь у него обычная роль загружать 1 файл, а если зашел другой пользователь с ролью допустим агент, у которого больше функционала, загружать 2 файла.

Есть такое дело, некоторая часть кода может не загружаться изначально.

При использовании уже упомянутого вебпэка это легко сделать - с помощью require.ensure. Если какие модули берутся только внутри колбэка этой функции, то оные скрипты в отдельный файл(ы) собраны будут, и подгрузится это дело только при первом использовании, а не сразу со страницей.

подробности тут - https://learn.javascript.ru/screencast/webpack , часть 4, п. 1

Vlasenko Fedor 29.09.2016 02:05

Цитата:

Сообщение от Яростный Меч
часть кода может не загружаться изначально.

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

oryth 29.09.2016 02:43

у меня сейчас так реализовано:
роли (всего роли 3) определяются на стороне сервера (с помощью asp), при входе в приложение, с помощью window аутентификации. если роль (пользователь) то загружается 1 файл, если роль (агент) то 2 файла, если роль админ то 3 файла. так же в зависимости от этих ролей (то есть доступность различных кнопок, просмотров и тому подобное) страница собирается на asp. так мне так оставить? или три этих файла соединить в один.
З.Ы, спасибо за ссылки. но я еще не все прочитал про JavaScript

Vlasenko Fedor 29.09.2016 02:54

не надо соединять, отдавайте каждому свой функционал :)

Aetae 29.09.2016 04:02

Соединить, но для каждого отдельно, если роли часто не меняются туда-сюда. Сервер не помрёт от пары(десятков?) лишних мегабайт.


Часовой пояс GMT +3, время: 12:00.