Планировка наследования в нефрите - PullRequest
5 голосов
/ 25 ноября 2011

Если вы не знаете, что такое нефрит .
У меня проблема с системой наследования шаблонов. Моя структура файла выглядит так

/views/
   |-- layout.jade
   /products/
      |-- index.jade
      |-- product.jade
/static/
   /stylesheets/
      |-- style.css

Проблема заключается в том, что при загрузке страницы продукта, которая получает идентификатор в качестве параметра (localhost: 3000 / product /: id, если бы не идентификатор / id, он загружался бы просто отлично), хотя макет по-прежнему расширяется правильно, он не загружается таблица стилей правильно (путь не работает). Я делаю половину этого правильно, хотя, на индексной странице продуктов таблица стилей загружается очень хорошо.

Layout.jade

  head
    link(rel='stylesheet', href='stylesheets/style.css')

1 Ответ

9 голосов
/ 25 ноября 2011

Это, вероятно, относительный путь в вашем href.Копаясь в экспресс-документации, я обнаружил, что наиболее популярный подход - ссылаться на таблицу стилей из базы сайта следующим образом (обратите внимание на / предыдущие таблицы стилей):

link(rel='stylesheet','/stylesheets/style.css')

Это дает преимуществобыть простым и работать по маршрутам различной глубины (/ about, / about / me и т. д.)Однако у него есть недостаток: он не поддерживает глубину каталога приложения.Например, если вы хотите разместить ваше приложение по адресу: http://yourserver/yourapps/yourapp, это будет проблемой.Я не знаю, волнует ли вас это или нет, но большинство примеров для Express, конечно, не интересуются: -)

Однако, если вы хотите сделать это правильно, есть один пример наЭкспресс сайт GitHub: блог.https://github.com/visionmedia/express/tree/master/examples/blog

Подход здесь заключается в том, чтобы использовать компонент промежуточного программного обеспечения, чтобы захватить базовый URL и вставить его в локальные элементы, передаваемые в представление макета.Вот как будет выглядеть ваш HTML-код:

!!! 5
html
  head
    title Blog
    link(rel='stylesheet', href=base + '/style.css')
  body
    #container!= body

Важными частями, чтобы проверить, требуется ли вам такой подход, являются middleware / locals.js, app.js, где компонент промежуточного программного обеспечения подключен, и layout.jadeгде используется база href.

Счастливого кодирования!

...