当前位置: 首页 > news >正文

合并多个js,css文件的方法

在Web项目的开发中,js,css文件会随着项目的开发变得越来越多,越来越大,这就给给性能方面带来一些问题,如,页面引入的的js,css越多的话,那么对就增加了http请求数,解决该问题的一个好的方法就是合并js,css文件。    下面就简单介绍一个方法,十分简单.下面介绍以合并js文件为例     (1)  G.js文件       ~function(){             window.G={};                        G.Method={                                add:function(){  alert(111);}                                ,sub:function(){  alert("减法");}                         };      }();(2) T.js文件      var T=(function(){             return {              t1:function(){alert("t1 method!")}                     ,t2:function(){alert("t2方法!")}                     ,sum:function(obj){return obj.x+obj.y;}              };}());上面列出了连个简单的js文件,下面就要写一个批处理文件来合并以上文件了(3) 合并js,css文件的批处理方法,文件名假设命名为 debug.bat      copy  G.js+T.js  GT_bin.js   /b       说明:           (1)  输入要合并的js文件,保存debug.bat文件,运行debug.bat即可.           (2)  就这么一行代码就搞定了,十分简单,GT_bin.js 为合并之后的文件名称 , /b是固定参数,文件合并之后,页面就只引用GT_bin.js就可以了,从而减少了js文件的引用,到达了减少http请求的次数,提高了网站的性能.          (3) 合并css文件方法也是如此。

YSlow会告诉我们,合并所有的js和css文件可以减少HTTP请求,这样能提升访问速度。

通常为了开发的方便,我们会把js按用途分类,这样就会有很多js文件,比如sablog的jscript文件夹里就有10几个文件,这样访问的时候就是10几个HTTP请求。

那么解决办法就是合并它们,对吧。可是这样有一个问题就是你需要保存所有文件的源文件,并且有修改的时候又要从新合并一次。

实际上我们可以更简单一点,让php去合并这些文件吧,同时我们也不用操心压缩这档子事了。这里就要提到一个开源的php项目,名字叫做Minify,它可以帮助你合并,精简,压缩和缓存Javascript以及CSS文件。

Minify的使用非常简单:

1. 把下载到的源码解压缩,把其中的min文件夹复制到Apache的DOCUMENT_ROOT目录下,即你的网站跟目录。

2. 然后打开min/config.php文件,注意下面一些选项

//去掉下面3项中的一项注释,设置缓存目录    

//$min_cachePath = 'c:\\WINDOWS\\Temp';    

//$min_cachePath = '/tmp';    

//$min_cachePath = preg_replace('/^\\d+;/', '', session_save_path());    

//设置缓存时间,以秒为单位,当然是越大越好    

//但是更简单的方式是在URL最后加一串数字,比如/min/f=hello.css&123456    

//这样Minify会自动把缓存时间设置成一年,当文件有更新时之需要修改URL后面的数字即可    

$min_serveOptions['maxAge'] = 1800;    

//f参数获取的文件个数限制,建议越大越好,但是会出现URL超长的问题    

//如果文件很多的话建议使用g参数设置group    

$min_serveOptions['minApp']['maxFiles'] = 10;    

3. 下面你可以打开http://yourdomain/min/builder/,这里有一个工具可以帮助你生成引用URL。填好你要合并的js或css文件,点击Update,下面会给出引用代码,类似这个样子

jscript/ajax.js,jscript/fiximage.js,syntaxhighlighter/scripts/shCore.js,    

syntaxhighlighter/scripts/shBrush.js&20100724">    

把它放到你的

标签里,删掉原先的一堆脚本引用,好了,现在访问你的网站只有一个HTTP请求了。

4. 你可能会嫌上面的URL是不是太长了点,当然我们还有更好的方法,并且效率会更高。我们可以使用g参数

这个方法需要在min/groupsConfig.php里进行设置,比如刚才的那一堆js可以写成这样

returnarray(    

'js'=>array('//sa2/include/syntaxhighlighter/scripts/shCore.js',    

'//sa2/include/syntaxhighlighter/scripts/shBrush.js',    

'//sa2/include/jscript/show.js',    

'//sa2/include/jscript/jquery.js',    

'//sa2/include/jscript/fiximage.js',    

'//sa2/include/jscript/common.js',    

'//sa2/include/jscript/ajax.js')    

);    

这段代码也是可以用上面提到的builder来生成的。

这样在你的网页中就只需要这样来引用了

   

看起来简洁许多吧~

相关文章:

  • 深入理解nbsp;CSSnbsp;中的行高与基线
  • jQuerynbsp;如何写插件nbsp;-nbsp;第一步
  • Mysql建表和索引使用规范
  • SEO优化技巧nbsp;如何优化…
  • Webnbsp;研发模式演变
  • Javascript模块化编程(一):模块…
  • Javascript模块化编程(二):AMD…
  • Javascript模块化编程(三):requ…
  • Minify压缩和削减CSS和JS
  • 如何写一个Jquerynbsp;的Plugin插件
  • 使用CSSnbsp;3创建不规则图形
  • 4人卖睡衣年赚7000万!绝对…
  • 我所理解的技术领导力
  • 问问题的艺术
  • 程序员发展十分重要的12条日常习惯
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 「面试题」如何实现一个圣杯布局?
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 4个实用的微服务测试策略
  • Java 网络编程(2):UDP 的使用
  • JavaScript创建对象的四种方式
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS基础之数据类型、对象、原型、原型链、继承
  • PHP那些事儿
  • Solarized Scheme
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue组件定义
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 爱情 北京女病人
  • 分类模型——Logistics Regression
  • 前端自动化解决方案
  • 使用 QuickBI 搭建酷炫可视化分析
  • 算法-插入排序
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序01:wepy框架整合iview webapp UI
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #、%和$符号在OGNL表达式中经常出现
  • #git 撤消对文件的更改
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)jQuery 基础
  • (转)负载均衡,回话保持,cookie
  • **PHP二维数组遍历时同时赋值
  • .CSS-hover 的解释
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Micro Framework初体验
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 回调、接口回调、 委托
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net6 webapi log4net完整配置使用流程
  • @DateTimeFormat 和 @JsonFormat 注解详解