用于渲染图像的 Grails Resources 插件、模块和 <r:img>?
Posted
技术标签:
【中文标题】用于渲染图像的 Grails Resources 插件、模块和 <r:img>?【英文标题】:Grails Resources plugin, modules and <r:img> to render images? 【发布时间】:2012-02-18 14:31:00 【问题描述】:尝试学习资源插件
据我了解,它有助于定义“资源”,例如 css 和 javascript 文件,并在需要时自动将它们拉入您的 gsp。我了解如何创建可以使用标签等加载的模块。
我不明白的部分是:http://grails-plugins.github.com/grails-resources/guide/4.%20Using%20resources.html#4.2%20Linking%20to%20images
所以我在 Config.groovy 中创建了一个名为“images”的模块,如下所示:
grails.resources.modules =
images
resource url:'/images/view.jpg', attrs:[width: 1280, height:720 , alt: 'my view']
resource url:'/images/breakfast.jpg', attrs:[width: 1280, height:720, alt: 'breakfast']
资源包含在head部分的.gsp页面中,如下:
<head>
<r:require modules="jquery-ui, blueprint"/>
</head>
我知道资源已成功添加到 head 部分,因为当我检查页面源时,我在那里看到它们:
<link href="/ResourceTest/static/Aa7jV0N2qZjOz7TLZ9cl5cREIh2y5jJYV0ytn4nQg9r.jpg" rel="shortcut icon" />
<link href="/ResourceTest/static/IpQBSjrYeLDdSUBGbP3jhf6Kkhvu1zV3XRtwWfKOIMn.jpg" rel="shortcut icon" />
我的问题是:图像资源是如何使用的?我的意思是我知道它是否是 javascript,资源的导入使您可以使用 html 代码中的功能,但关于图像,该网站说“一旦你这样做了,使用引用它们将自动设置宽度、高度等属性。”
怎么样?我尝试了以下方法:
<r:img module="images">
<r:img >
还有一些没有成功的人
起作用的是:
<r:img uri="/images/breakfast.jpg">
但是无论你是否添加带有 r:require 标签的模块,这都有效。那么,使用这个插件来处理图像有什么意义,我将如何使用它?
【问题讨论】:
<r:img uri="/images/breakfast.jpg">
时不只是从资源条目中添加宽度和高度吗?至少文档中是这么说的……
如果这就是它所做的一切 - 那我想那很酷..当我评论 <r:img>
标签在没有<r:require>
的情况下工作得很好; it even works with undeclared image resources。
require标签的重点是防止资源重复。因此,例如,假设您有多个依赖于 jQuery 的 javascript 资源,并且它们都是必需的。添加另一层复杂性:假设您实际上是通过 sitemesh 将不同的 gsp 模板组合在一起,并且它们每个都有自己的资源依赖关系。如果您只是在每个 gsp 布局的头部放置普通的 HTML 代码来引用这些资源,您可能会在页面标题中获得它们的多个实例,这可能会出现问题。使用资源插件可确保您只获得所需资源的一个实例。
请参阅 http://grails-plugins.github.io/grails-resources/ref/Tags/require.html 和 http://grails-plugins.github.io/grails-resources/ref/Tags/layoutResources.html。
但是,对于图像,这并不是必需的。如果您在一个页面上不止一次使用图像,可能是因为您想要它,或者因为您正在应用冗余布局并且需要进行一些重构。因此,您是正确的,require 标记对于通过<r:img>
调用的图像并没有太大作用。这仅仅是因为图像是一种不同类型的资源,因此它们的处理方式不同。不要出汗。 :)
【讨论】:
以上是关于用于渲染图像的 Grails Resources 插件、模块和 <r:img>?的主要内容,如果未能解决你的问题,请参考以下文章
Grails 和 Spring - 在 resources.groovy 中如何设置列表
Grails - 从 Javascript 方法调用控制器和渲染模板