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
.
所以我正在尝试让一个简单的 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
.