所以我想尝试使用简单的Grails 3和Angular应用程序。在本地启动后,我希望我的app.js
文件被加载,然后加载我的index.html
。
我不完全确定index/main gsps
是如何工作的,但我的理解是,使用asset-pipeline
,它应该指向我app.js
src/main/webapp/js
下的$routeProvider
和app.js
1}}将处理其余的事情。但它永远不会重定向到我的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"/>
:
context-path
以下是来自application.yml
server:
contextPath: '/item-upload'
app.js
我的src/main/webapp/js
位于webapp
下方。这是Grails 3中App.js
的替换目录。所以我将js,html和css文件放在那里。
(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));
:
class User < ApplicationRecord
attr_writer :name, :email
before_save {self.email = email.downcase}
validates :username, presence:true,
length: {maximum: 30},
uniqueness:true
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :email, presence:true,
length: {maximum:200},
format: {with: VALID_EMAIL_REGEX},
uniqueness: {case_sensitive: false}
has_secure_password
validates :password, presence: true,
length: {minimum:6}
end
任何想法我做错了什么?
答案 0 :(得分:1)
资产管道插件需要资源位于某些目录,除非您控制在build.gradle
文件中指定资产管道配置。
从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>
标记中引用资源路径。假设你在资产文件夹中有这样的文件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
(对于公共资源。静态文件,如htmls等)和src/main/resource
。