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

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

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

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

Новости

Пыха переехала на новый сервер, ура!

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

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

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

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

Один из методов frontend-оптимизации - перенести скрипты в низ страницы (после body например). Для этого должен быть какой-то менеджер скриптов, с синтаксисом например таким:
 
Ruby

//haml
:require_script{:type=>'text/javascript', :src=>'/js/jquery.js'}
 
или
Ruby

//haml
:insert_script_bottom{:type=>'text/javascript'}
  $(function(){
    blablabla();
  })
 

в результате дубликаты скриптов удалятся, а скриптовые вставки вставятся после подключаемых скриптов
HTML

</body>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript">
  $(function(){
    blablabla();
  })
</script>
 
однако ничего подобного я не нашёл ни в erb, ни в haml. (:require_script и :insert_script_bottom - это я для примера придумал)
 
аналогично для стилей
Ruby

:require_css{:src="/css/bla.css"}
 
преобразуется (точнее, я бы хотел чтобы оно преобразовывалось) в
HTML

<link rel="stylesheet" href="/css/bla.css" type="text/css" />
 

Собственно вопрос, как это сделать в третьих рельсах?
Попутно вопрос джанговодам - есть ли нативная реализация этого функционала в джанго?
« Последнее редактирование: 20 Февраль, 2011, 01:01:46 от master » Записан

Абырвалг    ↓ 
20 Февраль, 2011, 12:42:29 , спустя
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

перенести скрипты в низ страницы (после body например)
риальне работает?
Спустя 2 минуты 14 секунд добавил
что-то типа такого может быть https://github.com/sbecker/asset_packager
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
master    ↓ 
20 Февраль, 2011, 12:47:31 , спустя 5 минут 2 секунды
НЕ ХУЕТА! ХУЕТА!

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

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

риальне работает?
риальне, рекомендация от YSlow
Спустя 3 минуты 2 секунды добавил
ну кагбэ рельсы третьи все из себя html5, а в дефолтном шаблоне в заголовке пяток скриптов, пустых причём
Записан

master    ↓ 
20 Февраль, 2011, 01:01:02 , спустя 13 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

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

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

что-то типа такого может быть https://github.com/sbecker/asset_packager
эта поебень сжимает, а переносит ли скрипты вниз я так и не понял
Записан

Абырвалг    ↓ 
20 Февраль, 2011, 01:06:55 , спустя 5 минут 53 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

HTML
<%= javascript_include_merged :base %>
 

ну как я понимаю - вхуяриваешь это вниз страницы и они будут внизу
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
master    ↓ 
20 Февраль, 2011, 01:24:10 , спустя 17 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

Абырвалг,
1. нужно удалять дубликаты
2. нужно грамотно обрабатывать вставляемые скрипты, чтоб не получилось такого
 
HTML

<script type="text/javascript">
  $(function(){
    blablabla();
  })
</script>
...
<script type="text/javascript" src="/js/jquery.js"></script>
 
Записан

killich    ↓ 
23 Февраль, 2011, 08:04:56 , спустя 3 дня 6 часов 40 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

Вы, ребята вообще что обсуждаете?
Чет ни хрена не понятно.
Спустя 1 минуту 22 секунды добавил
- content_for :js do
   some JS code
 
= yield :js
 
Чем не устраивает?
Записан
Абырвалг    ↓ 
23 Февраль, 2011, 08:21:04 , спустя 16 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

не знаю, учитель, я не программирую на руби
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
master    ↓ 
23 Февраль, 2011, 08:42:28 , спустя 21 минуту 24 секунды
НЕ ХУЕТА! ХУЕТА!

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

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

- content_for :js do
   some JS code
 
= yield :js
 
Чем не устраивает?
не знаю, надо попробовать
Записан

killich    ↓ 
23 Февраль, 2011, 10:12:16 , спустя 1 час 29 минут 48 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

Что значит не знаю? O_o
 
http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html
Записан
master    ↓ 
02 Май, 2011, 02:14:53 , спустя 67 дней 3 часа 2 минуты 37 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

- content_for :js do
   some JS code
 
= yield :js
Это годится только частично, для инлайновых скриптов.
 
Нужен способ для подключения скриптов.
 
Допустим на главной странице у нас нет никаких js-эффектов, соответственно подключать jquery на главной нам не нужно. код главной будет:
HTML

<html>
<head>...</head>
<body>blabla<body>
</html>
 

В какой-то из внутренних страниц нам требуется подключить jquery и вставить инлайновый js-код:
HTML

<html>
<head>...</head>
<body>blabla<body>
<script type="text/javascript" src="/javascripts/jquery.js"></script>
<script type="text/javascript">
  $('.someclass').someaction();
</script>
</html>
 

как во вьюхе отметить что в лэйауте нужно вывести строку
Text
<script type="text/javascript" src="/javascripts/jquery.js"></script>
?
Записан

killich    ↓ 
06 Май, 2011, 03:47:13 , спустя 4 дня 13 часов 32 минуты 20 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

Ну так и напиши в макете в нужном месте
= yield :js
 
А во вьюхе
- content_for :js do
   <script src='111111111111111111111.js'></script>
 
или
 
- content_for :js do
   = javascript_tag '1111111111111111111.js'
Записан
master    ↓ 
16 Май, 2011, 12:28:10 , спустя 9 дней 8 часов 40 минут 57 секунд
НЕ ХУЕТА! ХУЕТА!

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

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

killich, попробовал. Оба варианта выводят контент вниз, но ни один не удаляет дубликаты. например, если я сделаю (подряд два раза)
 
Ruby
- content_for :js do
    = javascript_include_tag 'jquery.js'
 
- content_for :js do
    = javascript_include_tag 'jquery.js'

то и в коде у меня выведется
 
HTML

  <script src="/javascripts/jquery.js" type="text/javascript"></script>
  <script src="/javascripts/jquery.js" type="text/javascript"></script>
 

а мне понятное дело два раза не нужно
Записан

phpdude    ↓ 
16 Май, 2011, 09:50:30 , спустя 9 часов 22 минуты 20 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

ваш руби - какая то магия как по коду так и по логике :D
 
хуже пхп ейбогу)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
creeonix    ↓ 
26 Май, 2011, 12:10:41 , спустя 9 дней 14 часов 20 минут 11 секунд
НЕ ХУЕТА! ХУЕТА!


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

http://documentcloud.github.com/jammit/ сжималка, она же дубликаты прибивает, кажется
Записан
Страниц: [1] 2
Печать
 

Перейти в:  

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