Grails 3 src/main/webapp 加载 app.js 文件

Grails 3 src/main/webapp loading app.js file

所以我正在尝试让一个简单的 Grails 3 和 Angular 应用程序正常工作。在本地启动后,我希望加载我的 app.js 文件,然后加载我的 index.html.

我不完全确定 index/main gsps 是如何工作的,但我的理解是,使用 asset-pipeline,它应该指向我在 src/main/webapp/js 下的 app.js$routeProvider 将处理其余部分。但它永远不会重定向到我的 app.js。它似乎仍在搜索 grails-app/assets 文件夹中的文件。

这是我的 index.gsp:

<!doctype html>
<html>
<head>

<asset:javascript src="app.js"/>
</head>
<body>

<asset:javascript src="app.js"/>
</body>
</html>

main.gsp:

<!doctype html>
<html lang="en" class="no-js">
<head>

<p>Here</p>

<asset:javascript src="../../../src/main/webapp/js/app.js"/>

<g:layoutHead/>
</head>
<body>

<g:layoutBody/>

<asset:javascript src="../../../src/main/webapp/js/app.js"/>

这是我来自 application.yml

context-path
server:
   contextPath: '/item-upload'

我的 app.js 位于 src/main/webapp/js 下。这是 Grails 3 中 webapp 的替换目录。所以我将我的 js、html 和 css 文件放在那里。

App.js:

(function (angular) {
'use strict';

angular.module('common.initSideNavPanel', []);

var ngModule = angular.module('app', [
    'ngRoute',
    'ngAnimate',
    'item-upload'
]);

// Configure routing
ngModule.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/', {templateUrl: 'html/index.html', controller: 'UploadCtrl', pageName: 'upload'});

}]);

}(window.angular));

知道我做错了什么吗?

目录结构很重要。

Asset pipeline 插件要求资源位于特定目录,除非您正在控制在 build.gradle 文件中指定 asset pipeline 配置。

来自documentation of asset pipeline,这应该是文件夹结构。

Within the grails-app/assets directory are several subfolders
    grails-app/assets/javascripts
    grails-app/assets/stylesheets
    grails-app/assets/images
否则,控制

您可以通过 (see here)

添加其他文件夹
// in build.gradle
assets {
  includes = ['your/more/js/or/images/folders/etc', 'another/one']
  excludes = ['**/*.less']
}

完成后,要在 gsp 文件中引用资源,您需要使用

<asset:javascript src="app.js"/>

如何在 <asset> 标签中引用资源路径。

假设你在 assets 文件夹中有一个这样的文件grails-app/assets/javascripts/angularjs/app.js,然后引用它,你应该这样做

<asset:javascript src="angularjs/app.js"/> // NOTE: assets/javascripts is omitted from the path.

希望对您有所帮助。

作为旁注,请远离 src/main/webapp 文件夹。 Grails 3 推荐使用 src/main/resources/public(对于 public 资源。像 htmls 等静态文件)和 src/main/resource.