您的位置: 首页 / Design / 将 Javascript 和 CSS 写进一个文件

将 Javascript 和 CSS 写进一个文件

Published at May 5, 12am / Keywords: , , ,

我们在优化页面载入速度时,其中一个原则就是减少外部引用资源的数量。但是由于主流浏览器对于外部引用的 Javascript 和 CSS 都会有缓存,因此我们习惯于将他们分别存入单独的文件中。你有没有想过,这两种文件可以写进同一个文件中呢?让我们来看看具体的实现方法吧。via msdn blog

  1. <!-- /*
  2. function t(){} // 这里写入 Javascript
  3. <!-- */
  4. <!-- body { background-color: Aqua; }

上面这段代码即可实现这个神奇的效果。当它被当作 Javascript 载入时,它其中的 JS 代码就会被执行,CSS 代码都会被忽略;而当它被当作 CSS 载入时,结果恰好相反。

为什么会这样呢?其实原理很简单,这是由于当今主流浏览器(IE & Firefox)对于 JS 和 CSS 解释的方法。我们注意到,这段代码中多了很多不必要的 <!– 以及 /* */,其实这就是奥妙所在。当代码被当作 Javascript 载入时,所有的 <!– 都会被解释为 // 也就是 Javascript 的单行注释符号,所以,上面的代码变为:

  1. // /*
  2. function t(){} // 这里写入 Javascript
  3. // */
  4. // body { background-color: Aqua; }

CSS 被注释掉,而 Javascript 则被顺利的执行了。当代码被当作 CSS 载入时,所有的 <!– 都会被忽略,于是代码变为:

  1. /*
  2. function t(){} // 这里写入 Javascript
  3.  */
  4.  body { background-color: Aqua; }

/* */ 为 CSS 注释符,包含在之间的文字被认为是 CSS 注释。因此上面的代码中 Javascript 被注释掉了,只剩下正常的 CSS 可以被解释。

这段代码构思非常精巧,很好的利用了 Javascript 和 CSS 解释器的特性。但是我个人并不推荐将此方法推广,原因如下:1. 增加了代码的复杂度,阅读和修改都不是很方便;2. 多于的 <!– /* 会占用不少字节,实际上也是在浪费宝贵的带宽,延长载入时间。我个人还是推荐使用 Javascript 或 CSS 压缩的办法来提高效率。当然,如果您的应用确实需要尽可能少的载入文件的话,这倒不失为一个解决问题的好办法。

发表您的观点或推荐本文 Loading...

3 Responses

  1. May 5, 1pm / LINK / REPLY
    Gravatar

    这样也可以阿?回头试试。

  2. nick
    May 7, 3pm / LINK / REPLY
    Gravatar

    有没有命令行版本的css压缩工具?找了不少都是在线压缩的。

  3. ayumi
    May 10, 6pm / LINK / REPLY
    Gravatar

    那文件的后缀应该用什么呢??

Now, It's your Turn!

BACK TO Article / Comments