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压缩的更多相关文章

  1. MVC中的JS和CSS压缩

    小说一下Js和CSS压缩的好处: 1.减小了文件的体积 2.减小了网络传输量和带宽占用 3.减小了服务器的处理的压力 4.提高了页面的渲染显示的速度  很多建议将站点的静态文件(如图片.js.css ...

  2. 【MVC】 js,css 压缩

    [MVC] js,css 压缩 一. 引用 System.Web.Optimization.dll : 使用 Nuget ,在控制台输入 Install-Package Microsoft.AspNe ...

  3. 简短的几句js实现css压缩和反压缩功能

    写在前面 最近一直在整理css,但因为现在Visual Studio 2013太智能了,它每每在我按ctrl+E+D进行格式化代码的时候,就会将css进行层次格式化(如下图所示),而这个格式让我老大实 ...

  4. JS和CSS压缩部署,提高访问效率

    一直想把项目中的js和css压缩下,今天终于搞定了. 先说说几个注意的问题,目标影响着你对应的解决办法:1.压缩后的文件,是否要直接覆盖旧的文件2. 单个压缩文件重命名,还是整个目录换个名字,同时文件 ...

  5. Thinkphp js、css压缩类minify

    说明:Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏 ...

  6. freemarker 实现对URL的安全编码

    [#setting url_escaping_charset='utf-8'] ${yourstr?url}

  7. Asp.net 程序优化js,css合并与压缩

    访问时将js和css压缩并且缓存在客户端,采用的是Yahoo.Yui.Compressor组件还完成的,从这里可下载 创建一个IHttpHandler来处理文件 ) }; )              ...

  8. grunt 合并压缩js和css文件(二)

    具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modu ...

  9. 利用YaHoo YUI实现Javascript CSS 压缩 分类: C# 2014-07-13 19:07 371人阅读 评论(0) 收藏

    网站优化时,往往需要对js文件,css文件进行压缩,以达到减少网络传输数据,减少网页加载时间:利用YaHoo的YUI可以实现Javascript,CSS,压缩,包括在线的js压缩和程序压缩,发现C#也 ...

随机推荐

  1. SaltStack自动化软件简介及安装

    ==================================================================================================== ...

  2. C++实现索引堆及完整测试代码

    首先贴一篇我看的博客,写的很清楚.作者:Emma_U 一些解释 索引堆首先是堆,但比堆肯定是更有用. 用处: 1.加速. 索引堆存储的是索引,并不直接存储值.在堆上浮下沉的元素交换的时候,交换索引可比 ...

  3. 鬼斧神工:求n维球的体积

    原文地址:http://spaces.ac.cn/archives/3154/ 原文作者:苏剑林 标准思路 简单来说,\(n\)维球体积就是如下\(n\)重积分 \[V_n(r)=\int_{x_1^ ...

  4. 【原】docker基础(一)

    1.架构 2.说明 Docker daemon( Docker守护进程):Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程.可通过 Docker客户端与之通信. Cl ...

  5. Java 常见异常及处理方案

    Java 常见异常处理方案 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error: ...

  6. 测试工具 - IDEA - IDEA Code Coverage

    概述 使用 idea 自带的 code coverage 工具 背景 了解 白盒测试用例设计 和 测试覆盖率 之后, 大概就需要 实践 了 实践的话, 还是需要 工具 来检验效果 工具选取 选项 Ja ...

  7. Network - HTTP 可能遇到的状态码

    1. 概述 工作中, 会遇到 形形色色 的状态码 虽然这些状态码, 很多都是自定义的, 但是很多的 自定义, 还是有些 约定俗成 的规律 状态 虽然现在发布了, 但是基本算是没有, 还得慢慢补充 2. ...

  8. Codeforces Round #614 (Div. 2)E(思维,构造,DP)

    构造边权,从0开始给边赋值,初始选取一条边权为0,每次赋值的贡献为这一条链两侧的结点(包含链的端点)个数之积,下一次赋值以当前链其一端点续一条边,边权为上次赋的值+1.先DFS找到点的组合这条链两侧结 ...

  9. CRT中国剩余定理 & Lucas卢卡斯定理

    数论_CRT(中国剩余定理)& Lucas (卢卡斯定理) 前言 又是一脸懵逼的一天. 正文 按照道理来说,我们应该先做一个介绍. 中国剩余定理 中国剩余定理,Chinese Remainde ...

  10. 一周搞定模拟电路P2_二极管介绍_记录

    1 稳压二极管 1.1 稳压二极管伏安特性曲线 ΔIz 这一段为能够达到比较好的稳压效果的稳压电流. 1.2 两种连接方法的比较 2 整流二极管 2.1 特点 用于把交流电变成脉动直流电 3 开关二极 ...