Поддержание правильного CSS \ Javascript и использование Template Engine - противоречие? - PullRequest
1 голос
/ 01 декабря 2011

Шаблонный движок (Velocity, FreeMaker и т. Д.) Позволяет вам, помимо прочего, разбивать ваш HTML на повторно используемые куски.Например, у вас есть <div>, показывающий объявление, которое появляется во многих местах на вашем сайте - вы можете составить файл, содержащий этот <div> и его содержимое, один раз (с Velocity: файл 'myAd.vm') и загрузить его.на любую нужную страницу (с Velocity: apply #parse('myAd.vm').

Мне нравится думать об этих файлах .vm как о функциях, они "запускаются" (анализируются) и выплевывают текстовое содержимое. Они могут иметь "параметры "- в Velocity вы можете #set( $myParam = 'foo' ) непосредственно перед синтаксическим анализом файла 'myAd.vm' и использовать эту переменную внутри этого файла.

Мой вопрос: как правильно определить CSS и Javascript вих собственные файлы вписываются в это?

«myAd.vm» нуждается в CSS-стиле, вы можете определить этот CSS в этом файле с помощью тега <style> - что приведет к HTML-документу со стилемтег в его <body> - не в его <head> и, конечно, не в отдельном файле.

Или вы можете определить CSS, который нужен myAd.vm, в отдельном myAd.css.файл, и требуют, чтобы любой документ HTMLt, который анализирует myAd.vm, будет иметь <LINK REL="StyleSheet" HREF="myAd.css" TYPE="text/css"> в своем теге head.Это проблема, поскольку она делает вещи более сложными и громоздкими, и - вы можете захотеть проанализировать файл 'myAd.vm' в зависимости от условия (например, в Velocity у вас может быть #if(someCondition) #parse('myAd.vm') #end), то есть вы нена самом деле заранее не знаю, должен ли тег head ссылаться на этот внешний файл CSS.

Есть мысли?Благодаря.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

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

Таким образом, вы можете добавить к стеку активов из партиалов вида и поместить вещи прямо вголова.

0 голосов
/ 01 декабря 2011

Apache Wicket (основанная на компонентах инфраструктура) позволяет вам добавить то, что он называет «вкладом заголовка» (метод renderHead, теперь в Wicket 1.5), как часть композиции страницы через систему наследования. Это означает, что, хотя страница определяет только часть общего HTML-кода, которая будет отображаться, она все равно может добавить что-то к всего документа и, следовательно, включать теги для вашего javascript и CSS-файлов в их правильных местах .

Что касается некомпонентных фреймворков, то шаблонизатор Thymeleaf (который можно использовать с Spring MVC) благодаря своей способности «естественных шаблонов» позволяет создавать страницы, включая фрагменты с других страниц (как в , так и в , что в некоторой степени решает вашу проблему), в отличие от «ориентированного на наследование» подхода, естественного для составных сред, таких как Sitemesh или Tiles.

С уважением, Daniel.

...