在这里,我相信Grails 2.4.5 (如果我错了,请纠正我),该asset-pipeline
插件是管理CSS / JS资源的默认/理想方法。
我有一些自定义CSS / JS文件,希望将它们包含在我的GSP页面的很大一部分中,并且想知道如何添加它们:
asset-pipeline
插件;但...grails-app/views/layouts/special.gsp
,然后special.gsp
在每个所需的GSP页面中引用该布局。同样,所需的功能是:
grails-app/views/layouts/special.gsp:
-------------------------------------
<!DOCTYPE html>
<html>
<head>
<title><g:layoutTitle default="My app!"/></title>
<asset:stylesheet src="my-custom.css"/>
<g:layoutHead/>
</head>
<body>
<g:layoutBody/>
<asset:javascript src="my-custom.js"/>
</body>
</html>
然后,在我要使用此布局的任何GSP页面中,都只需像正常一样<meta name="layout" content="special">
在<header>
标签中添加一个即可。
如何asset-pipeline
互相配合使用和布局?我在哪里放置my-custom.css
和my-custom.js
?这里有什么特别说明吗?
如果您要离开special.gsp
原样,请执行以下操作:
my-custom.css
在grails-app\assets\stylesheets
文件夹中my-custom.js
在grails-app\assets\javascripts
文件夹中根据您的IDE,该assets
文件夹可能位于顶层,并且该文件夹位于其中的事实grails-app
可能会被抽象化。例如,使用GGTS中的“项目资源管理器”视图,assets
在我的项目正下方有一个文件夹。
通过资产管道,您还可以使用以下语法将这些文件包括在“父”文件中:
//= my-custom.js
或者
/*
*= require my-custom.css
*/
就像您一样,此“父”文件也需要包含在布局中。
附加信息:
我提到过require_self
,require_tree
在下面的评论中,我将进一步详细介绍它们的使用。
require_self
myLayout.gsp
<asset:javascript src="myParent.js"/>
myParent.js
//= myCustom.js
//= require_self
console.log("This code runs because of the require_self and after myCustom.js");
myCustom.js
console.log("My require_self is optional because I'm not using the asset-pipeline.");
在require_self
用于包括所述特定文件中存在的JS / CSS; 使用资产管道导入其他js / css文件的文件是必需的。如果文件严格是已导入的js / css,则它是可选的。这就是您可以使用asset-pipeline
导入未修改的文件(例如jquery.js)的原因,否则您需要将其放置require_self
在所有文件中。
require_tree
目录结构
grails-app/assets/
|
+--javascripts/
| |
| +--js-parent.js
| |
| +--myCustomJs
| |
| +--script1.js
| |
| +--script1.js
|
+--stylesheets/
|
+--css-parent.css
|
+--myCustomCss
|
+--sheet1.css
|
+--sheet2.css
|
+--sheet3.css
myLayout.gsp
<asset:javascript src="js-parent.js"/>
<asset:stylesheet src="css-parent.css"/>
js-parent.js
//= require_tree myCustomJs
csss-parent.css
/*
*= require_tree myCustomCss
*/
随您去,现在仅使用它们的父级和require_tree
语法就将所有3个CSS文件和2个js文件都拉入了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句