合并JS文件和CSS文件很多人都知道,也用过,目的是为了减少请求数。但有时候我们觉的把JS合并到1个文件,CSS又合并到另外1个文件也是浪费,我们如何能把CSS和JS一起合并进1个文件了?
这里需要使用1个常见的注释符<!-- 主要是利用css,js解析器对<!-- 进行不同的解析来实现JS和CSS合并的。
1. CSS解析器 会忽略<!--符号,
2. JS解析器会把<!--当作注释符号,与// 注释相同。
看看下面的列子:
<HEAD>
<TITLE>test</TITLE>
<style type="text/css">
<!--.d{color:red;}
</style>
<script>
<!-- function showMsg(m){alert(m);}
</script>
</HEAD>
<BODY>
<div class='d'>颜色变成红色</div>
<input type="button" value="不会弹出" onclick="showMsg('js');" />
</BODY>
运行上面的代码,会发现CSS是正常的,而JS确失效了,因为上面的代码等价于:
<style type="text/css">
.d{color:red;}
</style>
<script>
// function showMsg(m){alert(m);}
</script>
利用这个特性,我们就可以实现把js和CSS合并到1个文件中:
test.jscss 文件
<!-- /*
function showMsg(m){
alert(m);
}
<!-- */
<!-- .d{color:red;}
index.html
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" language="javascript" src="test.jscss"></script>
<link rel="stylesheet" rev="stylesheet" type="text/css" href="test.jscss" />
</head>
<body>
<div class='d'>颜色变成红色</div>
<input type="button" value="不会弹出" onclick="showMsg('js');" />
</body>
</html>
上面代码的JS和CSS都能正常运行,虽然test.jscss被链接了2次,但因为缓存的原因,其实只会下载一次。
注:上面代码中chrome中运行有问题,这是因为chrome中下载同1个文件之后只
解析一次,比如你先用<script
加载了test.jscss,chrome就会使用js解析器来解析test.jscss,而当你再用link加载test.jscss文件的时
候,chrome会直接把用js解析器解析后文件传递给link,而不会使用css解析器再解析一次,这就导致上面的代码只有js生效,而css无效,如
果把link标签放在前面,则js会失效。目前还没找到很好的解决版本,虽然可以在第二次加载的时候在url后带1个参数解决,但这样又变成2次请求了。
希望有知道的朋友指点下。
分享到:
相关推荐
1. **JS文件合并**:将多个JavaScript文件整合到一起,形成一个大的.js文件。这可以减少HTTP请求,并允许浏览器一次性下载所有必要的脚本。需要注意的是,合并顺序很重要,因为JavaScript代码通常是按顺序执行的,...
技术点:1、使用htmlparser解析html文件,得到html代码里的js、css、img链接 2、将相对路径的链接转变成绝对路径,并读取资源 3、将css和js合并到html 4、将图片转换成base64编码,写入标签的src
在ASP.NET MVC4框架中,优化网页性能的一个关键步骤是对JavaScript (js) 和 Cascading Style Sheets (css) 文件进行压缩和合并。这有助于减少HTTP请求的数量,减小文件大小,从而提升网页的加载速度和用户体验。本文...
3.合并和压缩js.bat 根据source将js进行合并到in目录,并输出到out目录 4.合并压缩css.bat 根据source将css进行合并到in目录,并输出到out目录 5.合并js.bat 只将source下数据合并到in目录 6.合并js.bat 只将in下...
JS、CSS 合并压缩工具是用于优化前端资源加载效率的重要工具,它们能够将多个 JavaScript 和 CSS 文件合并为一个文件,并进行压缩,减少网络请求次数,从而提高网页加载速度。本篇将详细介绍名为 TomsTools 的一套 ...
JS合并是将多个JavaScript文件整合到一个文件中,这样浏览器只需要下载一个文件,而不是多个。这减少了HTTP请求的开销,并且由于文件更小,下载速度也更快。此外,合并JS文件还可以消除脚本之间的潜在加载顺序问题,...
这种技术通常被称为“文件合并与压缩”,它将多个js和css文件合并为一个文件,并去除其中不必要的空白、注释以及进行其他优化,以减小文件大小。下面将详细介绍这一过程及其相关知识点。 首先,我们要了解为什么要...
"CSS JS 合并工具"就是这样的一个实用程序,它旨在帮助开发者将多个CSS和JavaScript文件整合到单个文件中,以此减少网页加载时的HTTP请求次数,从而提升页面的加载速度。 CSS和JavaScript文件的合并有以下几个主要...
"tmp_css_json_dir": "D:\\projects\\github_project\\merge_js_css\\examples\\json\\css", //css合并中间过程文件目录 "html_dir_path": "D:\\projects\\github_project\\merge_js_css\\examples\\html" \\待...
"js&css压缩工具"是一个专门针对这两种文件类型的压缩工具,它能有效地减小文件大小,从而降低网络传输的数据量,提升用户体验。 一、JavaScript(js)压缩 JavaScript压缩的主要目标是去除代码中的空白、注释以及...
Apache模块mod_concatx是针对网页优化的一个利器,它专门用于合并多个JavaScript(js)和样式表(css)文件,以此来提升网页加载速度。在现代网页设计中,为了实现复杂的功能和美观的界面,通常会引入大量的外部js和...
通过合并多个CSS和JS文件为一个文件,可以减少这些请求的数量,进而加快页面的加载速度。 压缩是指减小文件大小的过程,通常通过删除不必要的空格、换行和注释来实现。例如,JavaScript中的冗余空白和CSS中的未使用...
在网页开发中,JavaScript(JS)和Cascading Style Sheets(CSS)是不可或缺的部分,它们负责网页的交互逻辑和样式设计。然而,未经优化的JS和CSS文件可能会导致页面加载速度变慢,影响用户体验。因此,为了提升网页...
1. **减少HTTP请求**:一个页面如果包含多个js和css文件,浏览器需要发起多次HTTP请求。合并文件可以减少这些请求,进一步优化加载速度。 2. **简化代码管理**:合并后,开发者可以更方便地管理和维护代码,特别是在...
这将把所有CSS文件合并到一个`combined.css`中,所有JS文件合并到`combined.js`中。 当然,手动执行这些命令可能会变得繁琐,特别是在持续集成和自动化部署的场景下。因此,开发者通常会将YUI Compressor集成到构建...
首先,JS和CSS文件的压缩主要涉及两个方面:代码压缩和代码混淆。代码压缩是通过删除不必要的字符(如空格、注释和换行)来减小文件大小,这一过程通常不会影响代码的功能。代码混淆则是改变代码结构,使得代码难以...
假设我们有`style1.css`和`style2.css`两个文件,可以创建一个批处理文件,比如`merge_css.bat`,内容如下: ```batch copy style1.css + style2.css combined_styles.css /b ``` 运行这个批处理,将生成一个`...
### 前端JS和CSS的压缩合并之Grunt #### 一、Grunt简介与应用场景 Grunt作为一款强大的自动化构建工具,在前端开发中扮演着重要的角色。它通过一系列可扩展的任务帮助开发者自动化常见的重复性工作流程,比如编译...
"js和css批量压缩工具" 正是这样一个解决方案,它可以帮助我们在项目部署前有效地压缩和优化资源,提高网站的整体性能。 批量压缩的优势在于它可以一次性处理大量的文件,大大节省了手动操作的时间。对于大型项目或...
标题“CSS,JS文件压缩器,淘宝打包”所指的是一款专门针对CSS和JavaScript文件进行优化的工具,其主要功能是压缩和混淆这两种类型的文件,以达到减小文件体积的目的。在Web开发中,文件大小直接影响到网页加载速度...