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

时间:2017-04-16 21:17:58

标签: angularjs grails asset-pipeline grails3

所以我想尝试使用简单的Grails 3和Angular应用程序。在本地启动后,我希望我的app.js文件被加载,然后加载我的index.html

我不完全确定index/main gsps是如何工作的,但我的理解是,使用asset-pipeline,它应该指向我app.js src/main/webapp/js下的$routeProviderapp.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

任何想法我做错了什么?

1 个答案:

答案 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