我正在尝试从grails 2迁移到grails 3,因此我必须使用asset-pipeline插件来管理我的Java脚本文件。问题是我使用了几个外部库,例如全局化,ajax-solr。它们很大,有多个相互依赖的文件。他们还对jquery有很多依赖关系,并且经常使用命名空间。因此,当我简单地将它们复制到asset/javascript
中时,控制台中会出现很多异常,例如
Uncaught ReferenceError: AjaxSolr is not defined
Uncaught ReferenceError: jQuery is not defined
ParameterHashStore.js:13 Uncaught TypeError: Cannot read property 'extend' of undefined
第一个问题是这些库应该放在哪里?在子文件夹的
asset/javascript
中?还是文档建议使用
asset/lib
? (添加到此组织集合中的常见文件夹是“lib”文件夹。此文件夹在组织第三方库(如jQuery或Bootstrap-http://www.asset-pipeline.com/manual/)中很有用)。如果是,如何强制 Assets 插件从那里拿起?第二种如何解决依赖关系的问题?是否应该使用
//= require
指令修改globalize和ajax-solr文件?
最佳答案
我设法使它起作用。我将全局化放置在lib
文件夹(grails-app/assets/lib/globalize/
)中,并使用所有导入创建了一个文件globalize-manifest.js
:
//= require globalize/lib/globalize
//= require globalize/lib/cultures/globalize.culture.pl-PL.js
...
然后当我需要使用全局化时,我使用
// require globalize-manifest
关于javascript - Grails Assets 管道和外部JS库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41538185/