2015-04-30 1 views
1

Обновление:

Я также разместил этот вопрос в хранилище Джейд GitHub. Я уронить здесь тоже для будущего (круговой) Справочно: https://github.com/jadejs/jade/issues/1943Джейд: изменить <head> из любого места, кроме главной страницы

Оригинальное сообщение:

В узле по умолчанию + экспресс + приложение нефрита, я пытаюсь построить некоторые общие компоненты многократного использования (меню , нижний колонтитул ...), который я могу включить в некоторые страницы. Я застрял, пытаясь добавить ссылки на файлы .css или .js из блока или включенного файла. Я хочу сделать это, потому что я не хочу включать все стили и скрипты, если они мне не нужны.

Структура папки что-то вроде этого:


  • Корень
    • общественных
      • JavaScripts
        • main.js
        • menu.js
      • таблицы стилей
        • Main.css
        • menu.css
    • просмотров
      • разделяемые
        • layout.jade
        • menu.jade
        • footer.jade
      • index.jade

Файл layout.jade:

doctype html 
html 
    head 
    title= title 
    link(rel="stylesheet", href="stylesheets/main.css") 
    script(src="javascripts/main.js") 
    body 
    block content 

Файл index.jade:

extends shared/layout 

block content 
    h1= title 
    p Welcome to #{title} 

В menu.jade есть некоторый код, который нуждается в menu.css и menu.js файлы.

Теперь мне нужен способ добавить эти файлы на страницу <head> только при использовании файла menu.jade.

Я начал использовать Джейд несколько часов назад, поэтому очень возможно, что я пропустил что-то в документации.

Спасибо!

ответ

1

Вы можете сделать это с помощью JQuery в вашем menu.js так:

$("head link[rel='stylesheet']").last().after("<link rel='stylesheet' href='stylesheets/menu.css' type='text/css'>"); 

Я хотел бы предостеречь вас об этой практике, однако. Один из вариантов - создать шаг сборки, который объединяет все ваши файлы CSS вместе и обслуживает весь ваш стиль в одном файле css. LESS и cssmin - хорошие варианты здесь, и у них есть хорошие модули, чтобы автоматизировать это для вас в ворчании или глотке, в зависимости от того, что вы используете.

Вы упомянули о том, что не хотите включать все стили, если они вам не нужны, но я бы предположил, что при загрузке веб-браузера многие маленькие файлы css будут медленнее, чем загрузка одного большого один, особенно если вы обслуживаете эти файлы через веб-сервер, например nginx, который использует gzip, или если вы обслуживаете свои статические файлы через CDN, например, CloudFront.

+0

So no Jade solution ... спасибо. Я, вероятно, буду использовать МЕНЬШЕ. –