一、FreeMarker实现对js和css压缩
1、代码压缩理解:实际上就是将原有的文本中无用的注释、空行、空格去掉来压缩文件的大小。进行js和css压缩会带来如下好处:
1)减小了文件的体积,减少文件占用的内存;
2)减小了网络传输量和带宽占用;
3)减小了服务器的处理的压力;
4)提高文件加载、页面的渲染速度,提高性能能;
2、ftl页面中实现对js和css文件压缩
1)可在vars.dev.properties文件中进行如下配置:
scriptCompress=true
scriptConcat=true
scriptMinSuffix=-min
2)主页面引入:(main.ftl)
<#import "common/yaSuo.ftl" as ys>
<@ys.cssurl url= ["css/search/search","css/common/main"] />
<@ys.jsurl url= ["js/search/search","js/common/main"]/>
3)公用压缩文件:yaSuo.ftl
<#-- 静态资源压缩、合并-->
<#ftl strip_whitespace=true>
<#-- jsurl 格式化js的url加入版本号,用list形式可一次可以传入多个 -->
<#macro jsurl url=[] scriptCompress='${scriptCompress}' scriptConcat='${scriptConcat}'>
<#if scriptConcat == 'true'>
<script type="text/javascript" src="${scriptHost}/??
<#list url as js>
<#if js?index_of("min") lt 0 && scriptCompress =='true'>
${js}${scriptMinSuffix}.js
<#else>${js}.js
</#if>
<#if js_has_next>
,
</#if>
</#list>?${version}">
</script>
<#else>
<#list url as js>
<script type="text/javascript" src='${scriptHost}/
<#if js?index_of("min") lt 0 && scriptCompress == 'true'>
${js}${scriptMinSuffix}.js?${version}
<#else>${js}.js?${version}
</#if>'>
</script>
</#list>
</#if>
</#macro>
<#-- cssurl 格式化css的url加入版本号,用list形式可一次可以传入多个 -->
<#macro cssurl url=[] cssCompress='${cssCompress}' cssConcat='${cssConcat}'>
<#if cssConcat =='true'>
<link rel="stylesheet" type="text/css" href="${scriptHost}/??
<#list url as css>
<#if css?index_of("min") lt 0 && cssCompress == 'true'>
${css}${scriptMinSuffix}.css
<#else>${css}.css
</#if>
<#if css_has_next>
,
</#if>
</#list>?${version}"/>
<#else>
<#list url as css>
<link rel="stylesheet" type="text/css" href='${scriptHost}/
<#if css?index_of("min") lt 0 && cssCompress == 'true'>${css}${scriptMinSuffix}.css?${version}
<#else>${css}.css?${version}
</#if>
'
/>
</#list>
</#if>
</#macro>
代码理解:
1)ftl指令详解:http://freemarker.foofun.cn/ref_directive_ftl.html
strip_whitespace: 这将开启/关闭 空白剥离。 合法的值是布尔值常量 true 和 false (为了向下兼容,字符串 "yes","no", "true","false" 也是可以的)。 默认值(也就是当你不使用这个参数时)是依赖于程序员对 FreeMarker 的配置, 但是对新的项目还应该是 true。
gt: greater than 大于
gte: greater than or equal 大于等于
lt: less than 小于
lte: less than or equal 小于等于
2)macro指令的小示列:
模板文件:
<#macro list title items>
<p>${title?cap_first}:
<ul>
<#list items as x>
<li>${x?cap_first}
</#list>
</ul>
</#macro>
<@list items=["mouse", "elephant", "python"] title="Animals"/>
输出结果:
<p>Animals:
<ul>
<li>Mouse
<li>Elephant
<li>Python
</ul>
一、FreeMarker实现对js和css压缩的更多相关文章
- MVC中的JS和CSS压缩
小说一下Js和CSS压缩的好处: 1.减小了文件的体积 2.减小了网络传输量和带宽占用 3.减小了服务器的处理的压力 4.提高了页面的渲染显示的速度 很多建议将站点的静态文件(如图片.js.css ...
- 【MVC】 js,css 压缩
[MVC] js,css 压缩 一. 引用 System.Web.Optimization.dll : 使用 Nuget ,在控制台输入 Install-Package Microsoft.AspNe ...
- 简短的几句js实现css压缩和反压缩功能
写在前面 最近一直在整理css,但因为现在Visual Studio 2013太智能了,它每每在我按ctrl+E+D进行格式化代码的时候,就会将css进行层次格式化(如下图所示),而这个格式让我老大实 ...
- JS和CSS压缩部署,提高访问效率
一直想把项目中的js和css压缩下,今天终于搞定了. 先说说几个注意的问题,目标影响着你对应的解决办法:1.压缩后的文件,是否要直接覆盖旧的文件2. 单个压缩文件重命名,还是整个目录换个名字,同时文件 ...
- Thinkphp js、css压缩类minify
说明:Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏 ...
- freemarker 实现对URL的安全编码
[#setting url_escaping_charset='utf-8'] ${yourstr?url}
- Asp.net 程序优化js,css合并与压缩
访问时将js和css压缩并且缓存在客户端,采用的是Yahoo.Yui.Compressor组件还完成的,从这里可下载 创建一个IHttpHandler来处理文件 ) }; ) ...
- grunt 合并压缩js和css文件(二)
具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modu ...
- 利用YaHoo YUI实现Javascript CSS 压缩 分类: C# 2014-07-13 19:07 371人阅读 评论(0) 收藏
网站优化时,往往需要对js文件,css文件进行压缩,以达到减少网络传输数据,减少网页加载时间:利用YaHoo的YUI可以实现Javascript,CSS,压缩,包括在线的js压缩和程序压缩,发现C#也 ...
随机推荐
- Bugku-CTF之login2(SKCTF)(hint:union,命令执行)
Day40 login2(SKCTF) http://123.206.31.85:49165/ SKCTF{xxxxxxxxxxxxxxxxxxxxx} hint:union,命令执行
- CLR处理损坏状态的异常
你有没有写过不太正确但足够接近的代码?当一切顺利的时候,你是否不得不编写运行良好的代码,但是你不太确定当出了问题时会发生什么?有一个简单的.不正确的语句可能位于您编写或必须维护的代码中:catch ( ...
- ACM-ICPC实验室20.2.21测试-图论(二)
A.患者的编号 给出一个有向图,要求你输出字典序最小的拓扑排序. 常规拓扑排序是做不了的,正解是反向建图,同时用大根堆的优先队列维护,保证每次优先访问编号大的结点,再反向输出~ #include< ...
- LUA利用第三方API访问数据库
===========数据库访问--第三方 http { upstream backend { drizzle_server 192.168.4.119:3306 protocol=mysql dbn ...
- Dictionary-Guided Editing Networks for Paraphrase Generation解读
过程:输入->检索->编码->解码 解释:检索:输入一句话x,首先从PPDB中检索出M * 10 个释义对,并排序,记为x的本地字典: 编码:将所有的释义对编码为向量,单字转为字向量 ...
- 什么是this指针?this的几种指向
在JavaScript中,this指针是在创建时,由系统默认生成的两个隐式参数之一(另一个是arguments). this指针指向与该函数调用进行隐式关联的一个对象,该对象被称为“函数上下文”. t ...
- 2019冬季PAT甲级第一题
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ][]; ][]; ]; string ...
- Validation failed for one or more entities. See ‘EntityValidationErrors
try{ context.SaveChanges(); } catch (DbEntityValidationException ex) { var errorMessages = ex.Entity ...
- 每个Java开发人员都应该知道的4个Spring注解
这是每个Java开发人员都应该知道的最重要的Spring注解.感谢优锐课老师对本文提供的一些帮助. 随着越来越多的功能被打包到单个应用程序或一组应用程序中,现代应用程序的复杂性从未停止增长.尽管这种增 ...
- [踩坑记录] runtime error: load of null pointer of type 'const int' (leetcode)
leetcode上面做题遇到的错误 原因: 在调用函数时,如果返回值如果是一个常量则没问题.如果返回值若为指针则可能会出现该错误,假如返回的指针地址指向函数内的局部变量,在函数退出时,该变量的存储空间 ...