javascript - 如何将自定义 CSS/JS 添加到 Grails 2.4.x 布局/模板?

标签 javascript css grails asset-pipeline

这里是 Grails 2.4.5,我相信(如果我错了请纠正我)asset-pipeline插件是管理 CSS/JS 资源的默认/所需方法。

我有一些自定义 CSS/JS 文件,我想将它们包含在我的 GSP 页面的大部分中,并且想知道如何添加它们:

  1. 使用asset-pipeline插入;但是……
  2. 我可以(以某种方式)从 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.cssmy-custom.js ?这里有什么特别说明吗?

最佳答案

如果你要离开你的 special.gsp原样:

  • 你会把 my-custom.cssgrails-app\assets\stylesheets 内文件夹
  • 你会把 my-custom.jsgrails-app\assets\javascripts 内文件夹

根据您的 IDE,assets文件夹可能位于顶层,而且它位于 grails-app 中可以抽象。例如,使用 GGTS 中的“Project Explorer” View ,有一个 assets文件夹直接在我的元素下。

使用 Assets 管道,您还可以使用以下语法将这些文件包含在“父”文件中:

//= my-custom.js

/*
*= require my-custom.css
*/

这个“父”文件需要像您所做的那样包含在布局中。

附加信息:
我提到了 require_selfrequire_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;使用 Assets 管道导入其他 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
*/

你去吧,现在你有所有 3 个 css 文件和 2 个 js 文件,只使用它们的 parent 和 require_tree语法。

关于javascript - 如何将自定义 CSS/JS 添加到 Grails 2.4.x 布局/模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284024/

相关文章:

javascript - 我可以像这样按顺序选课吗?

javascript - 有没有办法将 javascript 代码从 iframe 注入(inject)到父窗口中?

javascript - onclick window.location 使用我的 javascript 更改更新的 css 属性

grails - 如何使用 metaClass 和 invokeMethod 实现委托(delegate)?

javascript - 无法在 eventReceived 事件中为 Angular 中的事件设置 ID

javascript - 为什么在这种情况下会出现 Stale Element 异常?

php - 匹配表格中 2 个不同列中的文本?

css - 如何在网页的特定高度启动css动画

url - 同一网址的不同映射

Grails - 子类中的唯一约束