Grails 资源插件与资产管道
Grails Resource Plugin vs Asset Pipeline
在发布这个问题之前,我不厌其烦地 Google 这个问题,但发现我显然属于(极端)少数,所以我显然遗漏了一些东西。我不止一次尝试将资产管道 Grails 插件合并到我的项目中,但每次我都发现自己又回到了资源插件。底线:我发现资源插件比 'anything goes' 资产管道更直观和更具表现力,尽管资产管道插件提供了潜在的功能。
对我来说最令人困惑的可能是资源在其中声明的方式。以资源插件为例,我可以这样定义fancybox资源:
'fancybox' {
dependsOn 'jquery'
resource url: '/js/fancybox/jquery.fancybox.css'
resource url: '/js/fancybox/helpers/jquery.fancybox-buttons.css', attrs: [v: '2.1.5']
resource url: '/js/fancybox/jquery.fancybox.js', attrs: [v: '2.1.5']
resource url: '/js/fancybox/helpers/jquery.fancybox-buttons.js', attrs: [v: '2.1.5']
resource url: '/js/fancybox/helpers/jquery.fancybox-media.js', attrs: [v: '2.1.5']
}
那里。简单的。那是 fancybox 'package',它取决于 jquery。
然而,对于资产管道,我必须声明一些奇怪的非标准约定如下:
/*
*= require jquery.fancybox
*= require jquery.fancybox-buttons
*/
然后我需要在 application.css 中的某处引用该文件,asset-pipeline 就像施了魔法一样,会神奇地将它们与一些我必须不断查找的复杂逻辑结合起来提醒自己的文档(
我什至不知道以上是否正确,因为我永远无法让资产管道为我工作)。然而,我所有的声明都分散在多个 .css 文件中,而不是像 ApplicationResources.groovy 这样一个很好的一体化位置,而且我不知道还有哪些其他插件正在声明其他不为人知的资产我,而使用资源插件,如果它不在 ApplicationResources.groovy 中,它就不存在。
然而,正如我所说,我找不到喜欢资源插件的文章。每个人似乎都在资产管道上拥有 'drunk the Kool-Aid'。 我明显遗漏了哪些神奇的专家?它似乎更加复杂和令人困惑。给出了什么?
我真的不认为你的问题有答案,因为你试图引发一场辩论,而不是专注于你希望解决的特定问题。您遇到了问题,但没有以清晰的方式讨论或给出您尝试过的内容,也许其他人可以指导您。
至于从资源到资产的变化,框架不就是这样工作的吗?事情发生了变化,因此框架继续前进。您仍然可以选择资源。
在资产中,您可以在 application.js 和 css 中定义结构,如果您禁用树,那么它不会加载我认为是您的问题之一的所有内容。
我对该主题进行了 google 搜索,但不确定您是否找到了以下链接,值得一试 read/look:
https://www.slideshare.net/AliTanwir/grails-asset-pipeline-plugin
在发布这个问题之前,我不厌其烦地 Google 这个问题,但发现我显然属于(极端)少数,所以我显然遗漏了一些东西。我不止一次尝试将资产管道 Grails 插件合并到我的项目中,但每次我都发现自己又回到了资源插件。底线:我发现资源插件比 'anything goes' 资产管道更直观和更具表现力,尽管资产管道插件提供了潜在的功能。
对我来说最令人困惑的可能是资源在其中声明的方式。以资源插件为例,我可以这样定义fancybox资源:
'fancybox' {
dependsOn 'jquery'
resource url: '/js/fancybox/jquery.fancybox.css'
resource url: '/js/fancybox/helpers/jquery.fancybox-buttons.css', attrs: [v: '2.1.5']
resource url: '/js/fancybox/jquery.fancybox.js', attrs: [v: '2.1.5']
resource url: '/js/fancybox/helpers/jquery.fancybox-buttons.js', attrs: [v: '2.1.5']
resource url: '/js/fancybox/helpers/jquery.fancybox-media.js', attrs: [v: '2.1.5']
}
那里。简单的。那是 fancybox 'package',它取决于 jquery。
然而,对于资产管道,我必须声明一些奇怪的非标准约定如下:
/*
*= require jquery.fancybox
*= require jquery.fancybox-buttons
*/
然后我需要在 application.css 中的某处引用该文件,asset-pipeline 就像施了魔法一样,会神奇地将它们与一些我必须不断查找的复杂逻辑结合起来提醒自己的文档( 我什至不知道以上是否正确,因为我永远无法让资产管道为我工作)。然而,我所有的声明都分散在多个 .css 文件中,而不是像 ApplicationResources.groovy 这样一个很好的一体化位置,而且我不知道还有哪些其他插件正在声明其他不为人知的资产我,而使用资源插件,如果它不在 ApplicationResources.groovy 中,它就不存在。
然而,正如我所说,我找不到喜欢资源插件的文章。每个人似乎都在资产管道上拥有 'drunk the Kool-Aid'。 我明显遗漏了哪些神奇的专家?它似乎更加复杂和令人困惑。给出了什么?
我真的不认为你的问题有答案,因为你试图引发一场辩论,而不是专注于你希望解决的特定问题。您遇到了问题,但没有以清晰的方式讨论或给出您尝试过的内容,也许其他人可以指导您。
至于从资源到资产的变化,框架不就是这样工作的吗?事情发生了变化,因此框架继续前进。您仍然可以选择资源。
在资产中,您可以在 application.js 和 css 中定义结构,如果您禁用树,那么它不会加载我认为是您的问题之一的所有内容。
我对该主题进行了 google 搜索,但不确定您是否找到了以下链接,值得一试 read/look:
https://www.slideshare.net/AliTanwir/grails-asset-pipeline-plugin