Регистрация  |  Вход

Организационные вопросы использования front-end библиотек

Всем привет!

Предлагаю обсудить орг вопросы использования, ставших уже "обязательными", front-end библиотек (jQuery, Bootstrap, какие-то популярные плагины) в пределах Орга, Приложения и ВФ страницы.

Есть ли у вас какая то политика в этом деле?

(1) Как подгружать библиотеку: с внешнего источника (как Гугл АПИ) или со стат ресурса?

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

(2) Иметь одну jQuery бибилиотеку на весь ОРГ или каждый проект/приложение имеет собственные? Дело в том, что jQuery используют почти все, Стат ресурсы созданы параллельно и независимо в разных сендбоксах разными людьми и в разное время, но имя у стат ресурса может оказаться одинаковым, и в результате в Проде можно "перезаписать" стат ресурс с тем же именем, - и у кого-то "внезапно" что-то "ляжет".

(3) Может для полной безопасности у каждого проекта, приложения иметь собственный набор "стандартных" библиотек с разными уникальными именами так, чтобы никаких "пересечений" с другими командами не было?


(4) теперь об использования библиотеки в пределах одной страницы. Предствавьте есть компонент, использующий jQuery и Bootstrap. Компонент настолько удачен, что его просят добавить на существующие страницы. Но там тоже есть свои jQuery и Bootstrap, обращающиеся к одному и тому же стат ресурсу. Надо бы убрать дублирующуюся подгрузку одной и той же библиотеки. Из комопонента убрать не возможно, он полжен быть полность самодостаточным. Получается нужно убрать (выкомментировать) на самой страницы, но и она после этого становится "зависимой" от компонента, но другого пути я не вижу. Но есть зыбкая надежда, что СФ делает "оптимизацию" подгрузки одного и того же стат ресурса, т.е. если в пределах одной страницы идет несколько ссылок на один и тот же стат ресурс, то в финальном документе ставится только одна ссылка на него. Вы не проверяли, может так и происходит?

Спасибо

Всем привет!

Предлагаю обсудить орг вопросы  использования, ставших уже "обязательными", front-end библиотек (jQuery, Bootstrap, какие-то популярные плагины) в пределах Орга, Приложения и ВФ страницы.

Есть ли у вас какая то политика в этом деле?

(1) Как подгружать библиотеку: с внешнего источника (как Гугл АПИ) или со стат ресурса?

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

(2) Иметь одну jQuery бибилиотеку на весь ОРГ или каждый проект/приложение имеет собственные? Дело в том, что jQuery используют почти все, Стат ресурсы созданы параллельно и независимо в разных сендбоксах разными людьми и в разное время, но имя у стат ресурса может оказаться одинаковым, и в результате в Проде можно "перезаписать" стат ресурс с тем же именем, - и у кого-то "внезапно" что-то "ляжет".

(3) Может для полной безопасности у каждого проекта, приложения иметь собственный набор "стандартных" библиотек с разными уникальными именами так, чтобы никаких "пересечений" с другими командами не было?


(4) теперь об использования библиотеки в пределах одной страницы. Предствавьте есть компонент, использующий jQuery и Bootstrap. Компонент настолько удачен, что его просят добавить на существующие страницы. Но там тоже есть свои jQuery и Bootstrap, обращающиеся к одному и тому же стат ресурсу. Надо бы убрать дублирующуюся подгрузку одной и той же библиотеки. Из комопонента убрать не возможно, он полжен быть полность самодостаточным. Получается нужно убрать (выкомментировать) на самой страницы, но и она после этого становится "зависимой" от компонента, но другого пути я не вижу. Но есть зыбкая надежда, что СФ делает "оптимизацию" подгрузки одного и того же стат ресурса, т.е. если в пределах одной страницы идет несколько ссылок на один и тот же стат ресурс, то в финальном документе ставится только одна ссылка на него. Вы не проверяли, может так и происходит?

Спасибо

1. Нужно конечно из ресурсов, но мне например лень лить библиотеки в ресурсы, поэтому я тупо все подрубаю из CDN
2. Странная проблема - а у статик ресурсов из пакетов нет неймспейса? Если ты имеешь в виду 1 орг с кучей unmanaged пакетов. То это уже проблемы разрабов договориться или придумать уникальное имя.
3. Конечно желательно иметь под каждый проект свой набор ресурсов.
4. Есть несколько путей:
- самый оптимальный проверять наличие библиотеки и подгружать при ее отсутствии. Рецептов куча.
- я делаю компонент без загрузки ресурсов, но в описании оставляю запись что компонент зависит от тех-то и тех-то JS либ. !Либы всегда подключаю на самом верхнем уровне! Я не вижу проблемы с тем если ты вставляешь куда-то компонент добавить еще рядом загрузку либ. А вот разруливать загрузки либ из каждой дырки уже жопа (проходил уже это - проблем море!)

1. Нужно конечно из ресурсов, но мне например лень лить библиотеки в ресурсы, поэтому я тупо все подрубаю из CDN
2. Странная проблема - а у статик ресурсов из пакетов нет неймспейса? Если ты имеешь в виду 1 орг с кучей unmanaged пакетов. То это уже проблемы разрабов договориться или придумать уникальное имя.
3. Конечно желательно иметь под каждый проект свой набор ресурсов.
4. Есть несколько путей:
- самый оптимальный проверять наличие библиотеки и подгружать при ее отсутствии. Рецептов куча.
- я делаю компонент без загрузки ресурсов, но в описании оставляю запись что компонент зависит от тех-то и тех-то JS либ. !Либы всегда подключаю на самом верхнем уровне! Я не вижу проблемы с тем если ты вставляешь куда-то компонент добавить еще рядом загрузку либ. А вот разруливать загрузки либ из каждой дырки уже жопа (проходил уже это - проблем море!)

спасибо за ответ!

спасибо за ответ!

Den Brown
Но есть зыбкая надежда, что СФ делает "оптимизацию" подгрузки одного и того же стат ресурса, т.е. если в пределах одной страницы идет несколько ссылок на один и тот же стат ресурс, то в финальном документе ставится только одна ссылка на него. Вы не проверяли, может так и происходит?

проверяли - происходит.

[quote="Den Brown"]Но есть зыбкая надежда, что СФ делает "оптимизацию" подгрузки одного и того же стат ресурса, т.е. если в пределах одной страницы идет несколько ссылок на один и тот же стат ресурс, то в финальном документе ставится только одна ссылка на него. Вы не проверяли, может так и происходит?[/quote]
проверяли - происходит.

А это актуально и для чего-нибудь внутри zip архива?

А это актуально и для чего-нибудь внутри zip архива?

организовано так:
zip со структурой каталогов типа js, css, images ...
в странице и компоненте стоит

<apex:includescript value="{!URLFOR($Resource.RESOURCE, '/js/lib/jquery-1.10.2.js')}" />

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

ps если линки на скрипты вставлять напрямую в чистом виде - то такая шняга не работает - полагаемся на браузер.

организовано так:
zip со структурой каталогов типа js, css, images ...
в странице и компоненте стоит 
[code]<apex:includescript value="{!URLFOR($Resource.RESOURCE, '/js/lib/jquery-1.10.2.js')}" />[/code]
страница использует компоненту. после генерации получается страница с одной ссылкой на скрипт. со стилями не помню, но вроде также.

ps если линки на скрипты вставлять напрямую в чистом виде - то такая шняга не работает - полагаемся на браузер.

Спасибо, запомню!

Кстати мне понравилась такая структура ресурса из последнего проекта:

zip
--- js
--- css
--- images
--- libs
--- jQuery
--- 1.10.2
--- (all resources related to this version)

вся соль в папке lib
ее открываешь и видишь все либы доступные в проекте
открываешь любую и видишь папки с версиями
открываешь версию в получаешь содержимое.
Хочешь использовать другую версию -> создал новую папку (старая остается и дальше используется)
Плюс в папке с версией может лежать не только сам js но и все зависимости (картинки, css).

В твоей версии структуры придется раскидывать тот же bootstrap.js и bootstrap.css по разным папкам и потом вспоминать где что лежит + относительные пути внутри либ не будут работать.

Посмотрите как работают современные менеджеры пакетов, их вылизывали не один год.

!!!!!!!!! КСТАТИ
есть такая штука - http://bower.io/
можно вообще ей пользоваться для создания структуры пакетов

Спасибо, запомню!

Кстати мне понравилась такая структура ресурса из последнего проекта:

[code]zip
  --- js
  --- css
  --- images
  --- libs
     --- jQuery
         --- 1.10.2
            --- (all resources related to this version)[/code]

вся соль в папке lib
ее открываешь и видишь все либы доступные в проекте
открываешь любую и видишь папки с версиями
открываешь версию в получаешь содержимое.
Хочешь использовать другую версию -> создал новую папку (старая остается и дальше используется)
Плюс в папке с версией может лежать не только сам js но и все зависимости (картинки, css).

В твоей версии структуры придется раскидывать тот же bootstrap.js и bootstrap.css по разным папкам и потом вспоминать где что лежит + относительные пути внутри либ не будут работать.

Посмотрите как работают современные менеджеры пакетов, их вылизывали не один год.

!!!!!!!!! КСТАТИ
есть такая штука - http://bower.io/
можно вообще ей пользоваться для создания структуры пакетов

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

с бовером я как-то не подружился :(

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

с бовером я как-то не подружился :(

Ну я догадываюсь что ты Виктор уже сталкивался с такой проблемой, но возможно кому-то будет полезно на будущее. У статик ресурсов есть свои лимит по размеру (3 или 5 метров не помню точно). Так что надо думать заранее что запихивать в архив для заливки.
У нас например уже собралось 3 статик ресурса с разными либами внутри. Есть конечно вариант все почистить, но это крайний вариант :)

Ну я догадываюсь что ты Виктор уже сталкивался с такой проблемой, но возможно кому-то будет полезно на будущее. У статик ресурсов есть свои лимит по размеру (3 или 5 метров не помню точно). Так что надо думать заранее что запихивать в архив для заливки.
У нас например уже собралось 3 статик ресурса с разными либами внутри. Есть конечно вариант все почистить, но это крайний вариант :)