维护适当的CSS Javascript和使用模板引擎-一个矛盾
Maintaining proper CSS Javascript and using a Template Engine - a contradiction?
模板引擎(Velocity, FreeMaker等)可以让你将HTML分割成可重用的块。例如,你有一个<div>
显示广告出现在很多地方在你的网站-你可以组成一个文件包含<div>
和它的内容一次(与速度:a 'myAd。vm'文件),并将其加载到所需的任何页面(速度:apply #parse('myAd.vm')
.
我喜欢把这些.vm文件想象成函数,它们被"调用"(解析)并输出文本内容。它们可以有"参数"-在Velocity中,您可以在解析"myAd"之前使用#set( $myParam = 'foo' )
。
我的问题是:如何在自己的文件中定义CSS和Javascript的正确方法适合于此?
"myAd。vm'需要CSS样式,您可以在该文件中使用<style>
标签定义该CSS -这将导致在其<body>
中具有样式标签的HTML文档-而不是在其<head>
中,当然也不是在单独的文件中。
或者,您可以将CSS定义为'myAd。vm'需要在一个单独的'myAd.css'文件,并要求任何HTML文档解析'myAd.css'。vm'将在其头部标记中有一个<LINK REL="StyleSheet" HREF="myAd.css" TYPE="text/css">
。这是一个问题,因为它使事情变得更加复杂和麻烦,并且-您可能想要实际解析'myAd。vm'文件取决于一个条件(例如,在Velocity中,你可以有#if(someCondition) #parse('myAd.vm') #end
) -这意味着你实际上不知道是否应该链接到该外部CSS文件的头标签。
任何想法吗?谢谢。
我使用过的大多数框架都让你能够进行某种函数调用,这种调用就像css或js文件的include一样,然后在head中输出到外部文件。在很多情况下,我实际上是通过一个minifier运行所有这些,所以最后只有一个css和一个js文件。
这样你就可以从视图部分中添加到资源堆栈中,并直接将内容放在头部。
Apache Wicket(一个基于组件的框架)允许您通过继承系统添加所谓的"Header贡献" ("renderHead"方法现在在Wicket 1.5中)作为其页面组成的一部分。这意味着,尽管页面只定义了要呈现的全部HTML的一部分,但它仍然可以向标题中添加一些内容。,因此包括<链接>链接>
对于非基于组件的框架,Thymeleaf模板引擎(可以与Spring MVC一起使用),由于它的"自然模板"功能,允许你通过包含来自其他页面的片段来组合页面(包括在
在 中,这在某种程度上解决了你的问题),而不是像Sitemesh或Tiles这样的组合框架自然采用的"面向继承"方法。问候,丹尼尔。
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 谷歌文档表面引擎
- 自定义运行时Can'在谷歌应用引擎中看不到我的自定义日志
- 从js引擎的角度来看闭包和构造函数是如何工作的
- Javascript-模板引擎
- 如何使用jQuery验证引擎验证组
- javascript中的表达式引擎字段
- 布局引擎和javascript引擎之间的区别
- 使用Node.js在应用程序引擎上进行本地单元测试
- 扩展Nashorn-ecma引擎以添加新的运算符和类型
- Javascript图形布局引擎
- 自定义警报/弹出窗口和保持JS引擎
- 你知道使用javascript游戏引擎的简单方法吗
- JavaScript游戏引擎——编辑器中的代码运行:)检查器中的错误
- 在谷歌应用引擎上用jQuery处理json表单
- AngularJS模板引擎的替代方案
- Rails引擎:使主机应用程序javascript可用于Mounted Engine
- 余烬引擎未捕获错误:找不到模块余烬视图/views/select
- Node中的基本html引擎
- 维护适当的CSS Javascript和使用模板引擎-一个矛盾