如何在Grails应用程序中正确地包含JS库

How to properly include JS libs inside a Grails app?

本文关键字:正确地 包含 JS 应用程序 Grails      更新时间:2023-09-26

我正在编写我的第一个Grails(2.3.6)应用程序,需要使用以下库:

  • JS-Signals
  • Hasher

我想从web-app/js/application.js文件内部配置这些库。我不确定是否应该:

  • 手动添加库到我的web-app/js/目录,然后从我的GSP中导入它们作为<script>元素(见下文);或
  • 把他们从BuildConfig.groovy拉进来。

使用前一种方法:

// Inside index.gsp:
<body>
    <script type="text/javascript" src="${resource(dir: 'js', file: 'signals.min.js')}" />
    <script type="text/javascript" src="${resource(dir: 'js', file: 'crossroads.min.js')}" />
    <script type="text/javascript" src="${resource(dir: 'js', file: 'hasher.min.js')}" />
    <script type="text/javascript" src="${resource(dir: 'js', file: 'application.js')}" />
</body>

使用后一种方法:

// Inside BuildConfig.groovy:
plugins {
    runtime: ":signals:???"
    runtime: ":crossroads:???"
    runtime: ":hasher:???"
}

使用Grails哪种方式是正确的,为什么?并且,如果后一种方法是普遍接受的方法,那么每个runtime条目需要哪些值?

我个人认为只有当你认为这些库很适合社区并且你想要维护它们时,我才会选择插件路线。看来你应该要么使用前面提到的资源插件,要么使用资产管道插件。

我个人肯定会使用资产管道插件而不是资源。它将成为2.4的默认设置,而且我认为使用起来更容易、更快。许多其他插件已经与它集成,而且使用起来非常简单。你也可以添加完整的非压缩版本的库,这样你就可以在开发调试时访问它们,当你的项目启动时,插件会自动为你缩小和捆绑它们。

1)添加你的库到/assets/js/。2)添加到application.js

//This is a javascript file with its top level require directives
//= require signals.js
//= require crossroads.js
//= require hasher.js
//= require_self
console.log("This is my javascript manifest");
3)添加资源到你的页面或布局
<head>
    <asset:javascript src="application.js"/>
</head>
http://grails.org/plugin/asset-pipeline

在Grails 2中没有资产管道,作为解决资产管道问题的方法,比如CKEditor,我不得不这样做:<g:javascript src="ckeditor/ckeditor"></g>在我的appLayout中,并将库添加到web-app/js。(显然,CKE的资产管道有问题)。

下面是Grails v.2.3.7的文档:https://grails.github.io/grails2-doc/2.3.7/ref/Tags/javascript.html

我也发现这个链接非常有用:我应该把javascript库放在Grails应用程序的哪里?