ФорумПрограммированиеБольше языковRuby → Как избавиться от дубликатов css/js, как перенести скрипты в низ страницы?

Как избавиться от дубликатов css/js, как перенести скрипты в низ страницы?

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 1:01 п.п., спустя 44 секунды

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


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

    или

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


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

    </body>
    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript">
     $(function(){
       blablabla();
     })
    </script>

    однако ничего подобного я не нашёл ни в erb, ни в haml. (:require_script и :insert_script_bottom - это я для примера придумал)

    аналогично для стилей

    :require_css{:src="/css/bla.css"}

    преобразуется (точнее, я бы хотел чтобы оно преобразовывалось) в

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


    Собственно вопрос, как это сделать в третьих рельсах?
    Попутно вопрос джанговодам - есть ли нативная реализация этого функционала в джанго?
    не всё полезно, что в swap полезло
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 12:42 п.п., спустя 23 часа 40 минут 43 секунды

    перенести скрипты в низ страницы (после body например)

    риальне работает?
    Спустя 134 сек.
    что-то типа такого может быть https://github.com/sbecker/asset_packager
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 12:47 п.п., спустя 5 минут 2 секунды

    риальне работает?

    риальне, рекомендация от YSlow
    Спустя 182 сек.
    ну кагбэ рельсы третьи все из себя html5, а в дефолтном шаблоне в заголовке пяток скриптов, пустых причём
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 1:01 п.п., спустя 13 минут 31 секунду

    что-то типа такого может быть https://github.com/sbecker/asset_packager

    эта поебень сжимает, а переносит ли скрипты вниз я так и не понял
    не всё полезно, что в swap полезло
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 1:06 п.п., спустя 5 минут 53 секунды

    <%= javascript_include_merged :base %>


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

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Фев. 20, 2011, 1:24 п.п., спустя 17 минут 15 секунд

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


    <script type="text/javascript">
    $(function(){
    blablabla();
    })
    </script>

    <script type="text/javascript" src="/js/jquery.js"></script>
    не всё полезно, что в swap полезло
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Фев. 23, 2011, 8:04 п.п., спустя 3 дня 6 часов 40 минут

    Вы, ребята вообще что обсуждаете?
    Чет ни хрена не понятно.
    Спустя 82 сек.
    - content_for :js do
    some JS code

    = yield :js

    Чем не устраивает?
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Фев. 23, 2011, 8:21 п.п., спустя 16 минут 8 секунд

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

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Фев. 23, 2011, 8:42 п.п., спустя 21 минуту 24 секунды

    - content_for :js do
       some JS code
     
    = yield :js
     
    Чем не устраивает?

    не знаю, надо попробовать
    не всё полезно, что в swap полезло
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Фев. 23, 2011, 10:12 п.п., спустя 1 час 29 минут 48 секунд

    Что значит не знаю? O_o

    http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Май 2, 2011, 2:14 д.п., спустя 67 дней 3 часа 2 минуты

    - content_for :js do
       some JS code
     
    = yield :js

    Это годится только частично, для инлайновых скриптов.

    Нужен способ для подключения скриптов.

    Допустим на главной странице у нас нет никаких js-эффектов, соответственно подключать jquery на главной нам не нужно. код главной будет:

    <html>
    <head>…</head>
    <body>blabla<body>
    </html>


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

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


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

    ?
    не всё полезно, что в swap полезло
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Май 6, 2011, 3:47 п.п., спустя 4 дня 13 часов 32 минуты

    Ну так и напиши в макете в нужном месте
    = yield :js

    А во вьюхе
    - content_for :js do
    <script src='111111111111111111111.js'></script>

    или

    - content_for :js do
    = javascript_tag '1111111111111111111.js'
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Май 16, 2011, 12:28 д.п., спустя 9 дней 8 часов 40 минут

    killich, попробовал. Оба варианта выводят контент вниз, но ни один не удаляет дубликаты. например, если я сделаю (подряд два раза)

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

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


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


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


    а мне понятное дело два раза не нужно
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Май 16, 2011, 9:50 д.п., спустя 9 часов 22 минуты 20 секунд

    ваш руби - какая то магия как по коду так и по логике :D

    хуже пхп ейбогу)
    Сапожник без сапог
  • creeonix

    Сообщения: 19 Репутация: N Группа: Кто попало

    Spritz Май 26, 2011, 12:10 д.п., спустя 9 дней 14 часов 20 минут

    http://documentcloud.github.com/jammit/ сжималка, она же дубликаты прибивает, кажется

Пожалуйста, авторизуйтесь, чтобы написать комментарий!