Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 11:06:37

Страниц: 1 [2]
Печать
Автор Тема: Как избавиться от дубликатов css/js, как перенести скрипты в низ страницы?  (Прочитано 1540 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
killich    ↓ 
30 Июнь, 2011, 10:02:35
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 20
Сообщений: 275
Сила слова: 7.27

- content_for :js do
    = javascript_include_tag 'jquery.js'
 
- content_for :js do
    = javascript_include_tag 'jquery.js'

Можно попробовать
 
- if yield(:js).blank?
  - content_for :js do
      = javascript_include_tag 'jquery.js'
 
Т.е если блок с таким именем еще пустой - то добавить в него текст
 
У тебя проблема в архитектуре а не в рельсе. Если ты несколько раз делаешь один и тот же javascript_include_tag - то первое о чем следует задуматься - а нахрена?
Записан
master    ↓ 
30 Июнь, 2011, 10:23:09 , спустя 20 минут 34 секунды
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 2080
Сила слова: 2.12

а нахрена?
на странице могут быть разные блоки (html), часть из которых требуют одну и ту же либу (jquery). мне удобнее привязывать клиентские скрипты к блокам, а не к страницам целиком.
 
например есть блок с fancybox и блок кнопок на jqueryui, оба требуют jquery и оба находятся на одной странице. при этом мне надо чтобы если я уберу один из них другой продолжал работать, а если уберу оба - то чтоб ненужные скрипты на загружались
 
lazy loading короче
Спустя 3 минуты 5 секунд добавил
в общем решение я нашёл, вот такое
 
Ruby

 
module ApplicationHelper
 
  def require_script(src)
    if @scripts.nil?
      @scripts = []
    end
    if @scripts.none? {|s| s == src}
      @scripts.push src
    end
  end
 
  def require_jquery
    require_script 'jquery/jquery-latest.js'
  end
 
  def require_jqueryui
    require_jquery
    require_script 'jquery/ui/jquery-ui-latest.min.js'
    require_script 'jquery/ui/external/jquery.bgiframe-2.1.2.js'
    require_css '/javascripts/jquery/ui/themes/smoothness/jquery.ui.all.css'
  end
 
  def get_scripts_html
    unless @scripts.nil?
      raw @scripts.map{|s| javascript_include_tag s}.join("\n")
    end
  end
 
  def require_css(src)
    if @styles.nil?
      @styles = []
    end
    if @styles.none? {|s| s == src}
      @styles.push src
    end
  end
 
  def get_css_html
    unless @styles.nil?
      raw @styles.map{|s| stylesheet_link_tag s}.join("\n")
    end
  end
 
end
 
Спустя 3 минуты 16 секунд добавил
в лэйауте делаем так
 
HTML

<!DOCTYPE html>
<html>
<head>
  <!-- тут подключаем стили столько раз сколько нужно -->
  <%- require_css 'main.css' %>
 
  <!-- тут выводим список подключаемых стилей -->
  <%= get_css_html %>
  <%= csrf_meta_tag %>
</head>
<body>
 
<!-- основной контент -->
<%= yield %>
 
</body>
<!-- подключаемые скрипты -->
<%= get_scripts_html %>
 
<!-- инлайновые скрипты -->
<%= yield :js %>
</html>
 
 

причём инлайновые скрипты должны писаться так, чтоб реагировать на document.onload
Спустя 3 минуты 59 секунд добавил
во вьюхах делаем так
 
HTML

...
<%- require_jquery %>
 
<%- content_for :js do javascript_tag do %>
$(function(){
  alert('JQuery инициализировано');
})
<%- end end %>
 

при этом скрипты получаются внизу страницы
Записан

missie    ↓ 
18 Июль, 2011, 04:47:45 , спустя 18 дней 6 часов 24 минуты 36 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 1
Сила слова: 0

Добрый день,
 
Я, рекрутер, компания Brightgrove Ltd. (г. Харьков). В связи с расширением компании, новыми интересными проектами мы набираем Ruby developers.
 

Должность (специальность) Middle/senior Rubby Developers
Минимальная зарплата (в мес.) Senior 2000 – 2500$ и выше
Mid 1500 – 2000$
Регион, район города ул. Тринклера
Станция метро Университет, Госпром
Описание вакансии Brightgrove is looking for Ruby Developers for new projects.
 
Required Experience and Skills
* 2 or more years experience developing with Ruby on Rails
* 3+ years experience in professional web development
* Experience developing Web 2.0 sites and lightweight web services
* Experience building dynamic websites using DHTML or AJAX
* Exceptional communication skills
 
Desired/Preferred Skills
* Experience with JSON, HAML, or SASS is a plus
* Must be proficient in MySQL or PostgreSQL
* Solid Javascript skills
* Familiarity with version control systems, especially Git
* Experience in unit testing, experience testing and continuous integration
* Linux/Unix skills
* Experience with Agile software development processes
 

Additional Requirements
* Send a link to your Github account so we can check out some of your code.  
* Provide some links to any public projects you have worked on and tell us about your involvement in them
* Include a link to your Stack Overflow profile if any.
 
We are prepared to offer a top market salary for exceptional candidates.
Опыт работы 2-5 лет
 

Если вас интересуют вакансии, пришлите свое резюме на vbrysina@brightgrove.com.
Записан
stels    ↓ 
13 Январь, 2012, 03:33:53 , спустя 178 дней 22 часа 46 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

Для того, чтобы переместить все скрипты в низ страницы перед тэгом </body> но, при этом их отображение на странице должно оставаться в прежнем месте, нужно сделать следующее. Предположим, у нас имеется два скрипта в разных местах:
 
<script src="/javascripts/jscripts1.js" type="text/javascript"></script>
<script src="/javascripts/scripts2.js" type="text/javascript"></script>
 
Заменяем эти строки на пустые блоки и назначаем каждому параметру block свой идентификатор, в данном случае, это block1 и block2:
 
<div id="script_block1" class="script_block1"></div>
<div id="script_block2" class="script_block2"></div>
 
Дальше, в низу страницы, перед тэгом </body> прописываем следующее, присвоив параметру ad соответсвующий ему идентификатор, в данно случае это, ad1 и ad2:
 
<div id="script_ad1" class="script_ad1" style="display:none;"><!--в этом месте подключаем скрипт-->
<script src="/javascripts/jscripts1.js" type="text/javascript"></script>
</div>
 
<div id="script_ad2" class="script_ad2" style="display:none;">
<div id="script_block2" class="script_block2"></div>
</div>
 
<script type="text/javascript">
  //перемещаем наш первый скрипт в реальную позицию отображения
document.getElementById('script_block1').appendChild(document.getElementById('script_ad1'));
  
//отображаем содержимое первого скрипта
document.getElementById('script_ad1').style.display = 'block1';
 
//перемещаем наш второй скрипт в реальную позицию отображения
document.getElementById('script_block2').appendChild(document.getElementById('script_ad2'));
  
//отображаем содержимое второго скрипта
document.getElementById('script_ad2').style.display = 'block2';
</script>
Все! Таким образом, сами скрипты будут грузиться в последнюю очередь, при этом, их отображение будет находиться в нужном месте страницы. Этим способом можно подключать, как внешние, так и внутренние скрипты.
Записан
stels    ↓ 
13 Январь, 2012, 03:40:48 , спустя 6 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0


Для того, чтобы переместить все скрипты в низ страницы перед тэгом </body> но, при этом их отображение на странице должно оставаться в прежнем месте, нужно сделать следующее. Предположим, у нас имеется два скрипта в разных местах:
 
<script src="/javascripts/jscripts1.js" type="text/javascript"></script>
<script src="/javascripts/scripts2.js" type="text/javascript"></script>
 
Заменяем эти строки на пустые блоки и назначаем каждому параметру block свой идентификатор, в данном случае, это block1 и block2:
 
<div id="script_block1" class="script_block1"></div>
<div id="script_block2" class="script_block2"></div>
 
Дальше, в низу страницы, перед тэгом </body> прописываем следующее, присвоив параметру ad соответсвующий ему идентификатор, в данно случае это, ad1 и ad2:
 
<div id="script_ad1" class="script_ad1" style="display:none;"><!--в этом месте подключаем скрипт-->
<script src="/javascripts/jscripts1.js" type="text/javascript"></script>
</div>
 
<div id="script_ad2" class="script_ad2" style="display:none;">
<script src="/javascripts/jscripts2.js" type="text/javascript"></script>
</div>
 
<script type="text/javascript">
  //перемещаем наш первый скрипт в реальную позицию отображения
document.getElementById('script_block1').appendChild(document.getElementById('script_ad1'));
  
//отображаем содержимое первого скрипта
document.getElementById('script_ad1').style.display = 'block1';
 
//перемещаем наш второй скрипт в реальную позицию отображения
document.getElementById('script_block2').appendChild(document.getElementById('script_ad2'));
  
//отображаем содержимое второго скрипта
document.getElementById('script_ad2').style.display = 'block2';
</script>
Все! Таким образом, сами скрипты будут грузиться в последнюю очередь, при этом, их отображение будет находиться в нужном месте страницы. Этим способом можно подключать, как внешние, так и внутренние скрипты.
Записан
Stasovsky    ↓ 
13 Январь, 2012, 04:02:47 , спустя 21 минуту 59 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3653
Сила слова: 1.48

ректальная тонзиллэктомия -_-
Записан
master    ↓ 
13 Январь, 2012, 06:49:02 , спустя 2 часа 46 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 2080
Сила слова: 2.12

stels, а не проще просто перед </body> прописать
<script src="/javascripts/jscripts1.js" type="text/javascript"></script>
<script src="/javascripts/scripts2.js" type="text/javascript"></script>
?
Записан

Ivan    ↓ 
13 Январь, 2012, 08:16:26 , спустя 1 час 27 минут 24 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98


ректальная тонзиллэктомия -_-

Иерархическая Темпоральная Память!
Записан

Страниц: 1 [2]
Печать
 

Перейти в:  

Этот топик скрыли: NRG, adw0rd, Sinkler, artoodetoo