Javascript Include tag Best Practice in a Rails Application
Powiedzmy, że muszę wywołać plik javascript w <head>
szablonu ERb.
Moim instynktem jest robić to co zwykle:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>
W układzie mojej aplikacji. Problem staje się oczywiście, że te pliki javascript są ładowane do każdej strony w mojej aplikacji, niezależnie od tego, czy są one potrzebne do oglądania strony.
Więc zastanawiam się, czy jest dobry sposób ładowania javascript do nagłówków, na przykład, wszystkie szablony ERb znaleziono tylko w określonym katalogu.
4 answers
Użyłbym content_for .
Na przykład określ miejsce, w którym chcesz go wstawić w układzie aplikacji:
<head>
<title>Merry Christmas!</title>
<%= yield(:head) -%>
</head>
I wyślij go tam z widoku:
<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-05 17:54:06
Czuję, że nie ma nic złego w tym wszystkie ustawienia domyślne yr, ponieważ mogą być następnie buforowane w przeglądarce użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-24 14:51:06
Sugerowałbym, aby nie dodawać javascript w nagłówku, ponieważ powoduje to wolniejsze ładowanie strony. Raczej załaduj js na dole strony, co jest szybsze. http://developer.yahoo.com/performance/rules.html#js_bottom
<body>
....
<%= yield(:js) -%>
</body>
I wyślij go tam z widoku:
<%- content_for(:js) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 05:51:40
Zwykle w pliku układu mam następujące:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
<%= @extra_head_content %>
</head>
A następnie w widokach:
<% (@extra_head_content ||= "") += capture do %>
<%= other_content %>
<% end %>
Zobacz dokumentację API dla #capture
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 22:03:36