ColdFusion cfstatic包含所有CSS文件
我正在尝试使用cfstatic。 在我的index.cfm中,我只使用cfstatic添加了green.css,cfstatic只添加了最小化的green.css版本,所以我的h1文本<h1>I should be Green</h1>
应该是绿色。 但cfstatic添加了green.css和red.css。 我缺少配置吗?
的Application.cfc
component output="false"{
This.name = "testing";
This.sessionManagement = true;
This.sessionTimeout = CreateTimeSpan(1, 23, 59, 59);
This.mappings["/org"] = expandpath('.')&'org';
function onRequestStart(){
application.cfstatic = CreateObject( 'org.cfstatic.CfStatic' )
.init( staticDirectory = ExpandPath('./assets'),
staticUrl = "/cfstatic/assets/"
);
}
}
Index.cfm
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<cfscript>
application.cfstatic.include( '/css/green.css',true );
</cfscript>
<cfoutput>#application.cfstatic.renderIncludes('css')#</cfoutput>
</head>
<body>
<h1>I should be Green</h1>
</body>
</html>
Green.css
/* This is assets/css/green.css */
h1 {color:green;}
Red.css
/* This is assets/css/red.css */
h1 {color:red;}
我的浏览器输出是,
我对CFStatic并不完全熟悉,但我复制了你的例子,并且发现了这篇关于包缩小化如何工作的文章。 通过阅读和评论,我认为你可以采用这两种不同的方式; 尽管我不能说他们是最好的(或唯一的)路线。
A)将样式分成自己的包(文件夹)。 它将每个文件夹中的文件编译为基于该文件夹的缩小文件。
所以你可以做一个像这样的目录结构...
assets
-- css
--- green
---- green.css
--- red
---- red.css
一旦编译完成,缩小的文件就是green.min.css
和red.min.css
。
然后修改你的Application.cfc中的include,调用green.css,像这样 - application.cfstatic.include( '/css/green/green.css',true );
B)在构造函数中设置minifyMode="file"
,它将在一个位置创建单独的缩小文件。
在这种情况下,您当前的index.cfm将按预期工作。
根据你正在使用的应用程序的复杂程度,我认为拆分包装是一种可行的方式,除非它只有几个文件。
干杯。
我从来没有使用CFStatic,但它可能在renderIncludes()
。 你有没有尝试删除该行? 怎么了? 如果它不直接renderIncludes()
,则配置includeAllByDefault
可能是关键。
从他们的文档:
默认包含所有文件(从0.2.2开始)
开箱即用,如果您从不使用.include()方法专门挑选要包含的文件(即,您只需执行.renderIncludes()),CfStatic将包含所有静态文件。 您可以通过将includeAllByDefault设置为false来更改此行为。
这句话似乎可能会好一点。 目前还不清楚这个函数是否需要渲染所有文件,或者这只是一个getAll(*Type*)
函数。
上一篇: ColdFusion cfstatic includes all CSS files
下一篇: Internet Explorer 11 doesn't enter fullscreen via Fullscreen API