Grails资产管道没有满足资源需求

时间:2014-05-31 10:37:43

标签: javascript grails asset-pipeline

我有一个Grails(2.3.6)应用,并将其配置为使用asset-pipeline

// BuildConfig.groovy
plugins {
    compile ":asset-pipeline:1.8.7"
}

在我的grails-app/assets/javascripts目录中,我有:

  • myapp.js
  • fizz.js
  • buzz.js

然后在我的grails-app/views/index.gsp

<!DOCTYPE html>
<html>
    <head>
        <title>My App</title>
        <link rel="stylesheet" type="text/css" href="${resource(dir: 'css', file: 'myapp.css')}" />
    </head>
    <body>
        <div id="home" class="page">
            <!-- Content... -->
        </div>
        <asset:javascript src="myapp.js" />
    </body>
</html>

最后,在我的myapp.js

= require fizz.js
= require buzz.js
= require_self

// INITIALIZE THE APPLICATION.
init();

function init() {
    alert("Do stuff!");
}

当我执行grails run-app时,应用程序启动就好了。当我去查看页面源代码(index.gsp)时,我得到:

<!DOCTYPE html>
<html>
    <head>
        <title>My App</title>
        <link rel="stylesheet" type="text/css" href="/static/css/myapp.css" />
    </head>
    <body>
        <div id="home" class="page">
            <!-- Content... -->
        </div>
        <script src="/assets/myapp.js?compile=false" type="text/javascript" ></script>
    </body>
</html>

但是当我点击/assets/myapp.js?compile=false链接时,要查看其来源,我会得到与上面完全相同的JS:

= require fizz.js
= require buzz.js
= require_self

// INITIALIZE THE APPLICATION.
init();

function init() {
    alert("Do stuff!");
}

因此asset-pipeline 不仅require的顶部翻译这些myapp.js语句并提取指定的JS文件,但它也不会剥离require也可以。如何配置插件以正确引入其他JS库(fizz.jsbuzz.js)?

2 个答案:

答案 0 :(得分:2)

使用asset-pipeline时,有一个适当的语法需要与require指令一起使用。

myapp.js应该如何开始(没有空的第一行):

//= require fizz.js
//= require buzz.js
//= require_self

详细参阅Usage documentations

答案 1 :(得分:-1)

在实施#dmahapatro回答后,您的网页来源应自动显示

 !DOCTYPE html>
 <html>
<head>
    <title>My App</title>
    <link rel="stylesheet" type="text/css" href="/static/css/myapp.css" />
</head>
<body>
    <div id="home" class="page">
        <!-- Content... -->
    </div>
    <script src="/assets/myapp.js?compile=false" type="text/javascript" ></script><script src="/assets/fizz.js?compile=false" type="text/javascript" ></script><script src="/assets/buzz.js?compile=false" type="text/javascript" ></script>
</body>
</html>

此代码段如下:

    /*
     *= require fizz.js
    */

告诉make资产管道在您的App上打开页面时,将fizz.js文件添加为标题中的链接脚本         

这也适用于css文件,视情况而定。