Всем привет!
Предлагаю обсудить орг вопросы использования, ставших уже "обязательными", 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 либ. !Либы всегда подключаю на самом верхнем уровне! Я не вижу проблемы с тем если ты вставляешь куда-то компонент добавить еще рядом загрузку либ. А вот разруливать загрузки либ из каждой дырки уже жопа (проходил уже это - проблем море!)
спасибо за ответ!
спасибо за ответ!
проверяли - происходит.
[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 статик ресурса с разными либами внутри. Есть конечно вариант все почистить, но это крайний вариант :)