gpt4 book ai didi

Grails Assets 管道 - 没有可用的

转载 作者:行者123 更新时间:2023-12-02 14:14:56 24 4
gpt4 key购买 nike

我有一个当前在 2.2.4 下运行的 Grails 应用程序。我决定将它升级到 2.4.0,并在这样做时将其转换为使用我的 css/js/images 的 Assets 管道。我将所有旧资源都放在了新 assets/... 目录中。

我正在使用 IntelliJ 12.1.7 在 Debug模式下运行应用程序以进行开发。该应用程序启动得很好,但我的 Assets 似乎都不可用。 Tomcat 7.0.52.1。 Java 7.0.55。我在原始 html 中看到诸如“main.css?compile=false”之类的引用,但是当我尝试直接在浏览器中查看它时, Assets 本身不可用(http:\localhost:8080\assets\stylesheets\main .css)。我也会在这里稍微展示一下我的无知,并询问“?compile = false”是什么。这对我来说很新鲜。

我跑了“干净的 chalice ”。我需要在 config.groovy 或任何其他文件中进行任何更改吗?根据 Grails 文档,我确实进行了更改以删除对旧“资源”系统的引用。

任何想法为什么 Assets 似乎没有被插件拾取?

更新:翻译中一定会丢失一些东西,因为当我从头开始创建应用程序时, Assets 加载得很好,就像我在文档中引用时所期望的那样。我已经交叉检查了我的 BuildConfig 和 Config 文件中的设置,它们在 2 个应用程序之间匹配。他们还使用所有插件的相同版本。如果我找到解决方案,我会在这里发布,但坦率地说,我认为我的下一个业务顺序是逐渐开始将我的应用程序中的部分导入到新创建的应用程序中,因为似乎某处隐藏了一个设置我不知道在我的旧代码库中不存在的 2.4.0 创建期间进行配置。或者有一些遗留的“资源”插件没有被删除。幸运的是不是一个巨大的应用程序。

更新2:我找到了问题的根源。我的应用程序使用 Apache Shiro 进行安全性和身份验证。安装插件不会导致问题,但是一旦我运行“grails shiro-quick-start”, Assets 管道就会停止工作。我正在为这个问题添加一个标签,希望有 Shiro 知识的人能够提供帮助。我还在 grails jira (https://jira.grails.org/browse/GPSHIRO-79) 上创建了一个错误

更新 3:已找到并实现了解决方法。请参阅上面的 jira 链接。

最佳答案

昨晚有类似的问题开始学习 Assets 以升级插件。

诀窍是在浏览器中加载 Web 开发人员控制台,并在加载时查看输出 -

一切正常吗?可能是加载的顺序不正确:

对于 CSS:application.css

看看上面然后看看包含文件夹

JS: application.js

查看声明,然后遵循文件夹结构 - 更有意义。

简而言之,CSS 应该没问题,但 JS 需要特定的顺序,具体取决于您加载的内容

所以对于js

//= require jquery/jquery
//= require bootstrap/bootstrap
//= require angular/angular
//= require angular-route/angular-route
//= require angular-resource/angular-resource.min
//= require angular-table/ng-table
//= require myapp/index
//= require myapp/services
//= require myapp/arrestedDirectives
//= require_tree custom-folder
//= require_tree views
//= require_self

这将按定义文件的顺序加载,在底部需要树文件夹名称以在这些文件夹中加载通配符(顺序无关紧要)

对于 CSS
*= require mobile
*= require_self
*= require bootstrap
*= require bootstrap-glyphicons

这是定义的顺序

在js中
require_tree custom-userapp

如果我想要一个必须添加的特定顺序,这将加载 custom-userapp 文件夹中的所有内容,没有定义的结构:
//= require custom-userappthis/js1
//= require custom-userappthis/js2

--
E2A:根据我的理解对 Assets 的完整解释:

所以在你的 application.js 的顶部它显示:
//= require jquery
//= require_tree .
//= require_self

自我 3 类型的声明:
1 require 
//=require -- This is a custom file or folder/file
//require folder/file --> [load folder/file.js]

2. require_tree

//require_tree . --> [everything in current folder]
//require_tree folder --> [ this one is wild card in the folder ]

3. require_self -itself - this can contain global declarations
//require_self

现在这是位于 grails-app/assets/javascripts/中的主要 application.js
  <asset:javascript src="application.js"/>
<asset:stylesheet href="application.css" />

因此,如果您现在转到 grails-app/views/layouts/main.gsp,您会发现 application.js 和 application css 都声明了{如上}。

css 文件格式有点不同,因为它以 * 开头并遵循上述格式
*= require main
*= require mobile
*= require_self
*/

只要定义了所有内容,就应该通过上述两个 application.js 和 css 在结束页面上加载。

如果你想你不能在 js 中定义一些东西需要特定的定义,然后像这样加载另一组调用:
 <asset:javascript src="myfolder/application.js"/>
<asset:stylesheet href="myfolder/application.css" />

如果您希望实现相同的 Assets 配置或将 application.js 替换为 jquery-ui.js 并使其加载 jquery-ui.js 物理 js 文件,请遵循上述文件格式。

不确定为什么您需要为通用/实用网站执行此操作,因为只要在主文件中正确声明了所有内容,它就应该可以工作。

我提到了 web 开发者控制台——这是 firefox 开发者工具,在主控制台中它显示了加载的 url——如果好的,你将能够识别 css/js 文件和 200 的状态..

我已将 testingarrested 更新到 2.4,因此它已安装 assets stuff :

最后更新:

如果您有几个 CSS 文件,可以说您安装了具有 css/js 的 bootstrap 文件夹,并且您只希望这个 css 文件用于您的整个站点,并且可能是另一个自定义 css,您来自 js 文件夹中的另一个文件夹。然后删除 stylesheets 文件夹,只在 application.js 中有你的 js 引用
然后在你的 main.gsp
    <asset:stylesheet href="bootstrap-css/css/bootstrap.css" />
<asset:stylesheet href="customfolder/css/custom.css" />
<asset:javascript src="application.js"/>

我认为这只是结束 Assets 接受空白支票

关于Grails Assets 管道 - 没有可用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com