我有一个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.js
和buzz.js
)?
答案 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文件,视情况而定。