编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Grails指南31Web层静态资源(蛋鸡粪槽式静态通风发酵技术指南)

wxchong 2024-10-05 02:12:28 开源技术 10 ℃ 0 评论

Grails 3使用Asset Pipeline插件来实现静态资源(如图片、css、js等)的管理

Asset Pipeline引入资源的方式,或者说Asset Pipeline的常见写法如下:

application.js----------------

//注释

//= require jquery

//= require app/models.js

//= require_tree views

//= require_self

console.log("This is my javascript manifest");

application.css----------------

/*

注释

*= require bootstrap

*= require font-awesome

*= require navigation/header.css

*= require_tree components

*/

注意:在asset-pipeline中,扩展名可写可不写,即写成models.js或者models都行,写成header或header.css都可。很酷!对吧?

通常,为了指定js或css文件的编码格式,我们可以这么做:

<script src="application.js" charset="utf-8"/>

但这样的做法,在产品模式下或者打成war包时,会失效。那么怎么做?在asset-pipeline中,可使用关键代码encoding UTF-8

application.js----------------

//=encoding UTF-8

//=require_self

//=require_tree .

application.css----------------

*= encoding UTF-8

*= require mobile

*= require_self

####################

在Grails下asset-pipeline资源所在位置为:grails-app/assets

值得注意的是,grails-app/assets文件夹下的第一层目录,感觉上类似于命名空间,但不计算在路径之中,只用于对资源进行分门别类,如:

assets/javascripts — 名称自定,通常用javascripts,用于存放js文件

assets/stylesheets — 名称自定,通常用stylesheets,用于存放css文件

assets/images - 名称自定,通常用images,用于存放图片

assets/libs - 名称自定,通常用libs,用于存放功能组件,即很可能同时包含了css、javascript、images

######################

在gradle中,资源对应关系举例(*代表任意文件夹):

application.js----------------

//= require table

对应着grails-app/assets/*/table.js

######################

在gradle中对asset-pipeline进行配置,build.gradle:

assets {

minifyJs = true

minifyCss = true

enableSourceMaps = true

maxThreads = 4 //useful for concurrent asset processing during build

configOptions = [:] //useful for custom config on extension libraries

minifyOptions = [

optimizationLevel: 'SIMPLE',

angularPass: true // Can use @ngInject annotation for Angular Apps

]

includes = []

excludes = ['**/*.less'] //Example Exclude GLOB pattern

//for plugin packaging

packagePlugin=false //set to true if this is a library

//developmentRuntime can be turned off

developmentRuntime=true

//if you want to customize the jar task this task runs on you can specify a jarTaskName

jarTaskName=null

// Can add custom asset locations (directories or individual jar files)

from '/vendor/lib'

from '/path/to/file.jar'

}

#################

在页面中引入资源:

<head>

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

<asset:stylesheet src="application.css"/>

</head>

grails-app/assets/*/application.js

grails-app/assets/*/application.css

<asset:image src="logo.png" width="200" height="200"/>

grails-app/assets/*/delete.png

<asset:image src="icons/delete.png"/>

grails-app/assets/*/icons/delete.png

<link href="${assetPath(src: 'manifest.json')}"/>

grails-app/assets/*/manifest.json

在css样式中引入资源:

.house {

background-image: url("skin/house.png");

width:150px;

height:150px;

}

grails-app/assets/*/skin/house.png

.information {

background: url("/assets/skin/information.png") #FF6100 repeat-y right;

width:150px;

height:150px;

}

grails-app/assets/*/skin/information.png

###############

application.js----------------

//= require jquery-2.2.0.min

//= require bootstrap

//= require_tree .

//= require_self

注意(先后顺序):

//= require jquery-2.2.0.min,最先引入,grails-app/assets/*/jquery-2.2.0.min.js

//= require bootstrap,第二引入,grails-app/assets/*/bootstrap.js

//= require_tree .,引入其他没引入的js,次序随意,深度遍历,即引入当前文件所在的文件夹(grails-app/assets/*/)下的所有未被引入的js

//= require_self,引入自身,即application.js

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表