我应该使用什么来自动组合css / js文件?


14

我知道链轮可用于合并javascript文件,但尚未尝试过。还有哪些其他选择,它们又如何叠加?


2
另外,虽然这不是一个真正的答案,但是您可能会对资源包感兴趣:limi.net/articles/resource-packages不幸的是,我认为还没有人实现它。
luiscubal

Answers:



2

我已经在另一个问题中解决了这个问题

事后看来,我应该在网站管理员而不是程序员网站上问这个问题。

您有3种选择:

  1. 让您的框架自动处理
  2. 让您的网络服务器自动处理
  3. 滚动您自己的选项以手动执行

选项1(使用CakePHP扩展):

AssetPacker下载并安装到您的站点(这也需要jsmin和CSSTidy)。修改几行包含js文件的源代码。洗涤->冲洗->重复。瞧,剩下的事会自动为您完成。

如果您使用其他框架,很可能有一个工具可以为您完成此任务。这是Webdev世界中非常普遍的要求。

选项2(使用Apache mod):

看一下ApacheGoogle Pagespeed mod。它可以完成您描述的所有内容,甚至更多。

不过,请务必监视生产服务器的资源。有些人已经看到问题,这会以不良的方式增加服务器上的负载。我不是很肯定,但可能需要足够的静态内容策略才能有效。

选项3:

如果确实需要,您可以创建一些PHP魔术,将JS文件服务器端连接起来,并将所有的链接关系合并为一个,但是...这正是这两种策略已经在做的事情。

就个人而言,我强烈建议您不要使用此选项。


据我所知,Sprockets将与AssetPacker相同的JS文件串联在一起,只是将其实现为Ruby Gem。它没有做的是最小化js代码。因此,如果您使用它,那么也可以抓住jsmin gem。有关如何在CakePHP中使用Sprockets + JSMin的信息,请查看此内容

我知道我强调CakePHP,但是...我假设,如果可以将插件适配CakePHP,那么将其适配于不同的框架也应该是微不足道的。



1

您确定要合并它们吗?如果您使用公共库,则可以利用CDN来交付您的JavaScript。然后,您可以利用浏览器缓存(假设其他站点使用相同的CDN)和分布式交付。 微软谷歌都有各自的解决方案(我也没有诚实使用过,但我肯定会开始),并且可能还有其他解决方案。


1

对于ASP.NET项目,我已根据Karl Seguin的指示将其纳入了构建过程。

Karl在他的博客中对此进行了最好的描述,但简短的版本是设置一个包装YUICompressor的控制台应用程序。然后,您可以设置一个构建后任务,以针对站点中JS文件的位置调用该控制台应用程序。


1

如果您的Web应用程序是PHP,则应考虑使用minify

它结合了多个CSS或Javascript文件,删除了不必要的空格和注释,并为它们提供gzip编码和最佳的客户端缓存标头。


1

为此,了解Python实际上可能有用。您可以很快学习Python。我大约两周前开始,而我的第一个应用程序(仍未完成)将做您想要的完全相同的事情。像DotLess编译器一样,它将具有监视功能,该功能可以查看文件或目录,如果它们发生更改,它将生成一个新文件。

Python对于其他维护任务也非常有用,我读过很多系统管理员喜欢使用它。


我本人更像是Perl的家伙,我可能会一起破解一些东西,但是我宁愿使用一些预先存在的工具(大概比我的快速而肮脏的工作具有更好的测试和更多的功能)。
Cebjyre's

令人毛骨悚然的自我推广,但@Pickels,您对帮助这个项目感兴趣吗?code.google.com/p/lesscss-python
Metalshark,2010年

0

我创建了Minifpy:用Python3(兼容Mac OS,Windows和Linux)编写的一种工具,可以使用Python合并和缩小JS和CSS文件。

Minifpy使用非常简单的JSON配置文件来定义必须合并,最小化或不合并的文件:

{
    "js": {
        "minify_files": [
            {"from": "static/file.js", "to":"static/file.min.js"},
        ],
        "merge_files": [
            {"from" : ["static/file1.js", "static/file2.js"], "to":"static/public.js", "to_min": "static/public.min.js"}
        ]
    },
    "css" : {
        "minify_files": [
            {"from": "static/file.css", "to":"static/file.min.css"},
        ],
        "merge_files": [
            {"from" : ["static/file1.css", "static/file2.css"], "to":"static/public.css", "to_min": "static/public.min.css"}
        ]
    }
}

您也可以在CLI中使用此工具。

Minifpy可以检测到JS / CSS文件上的任何修改,并自动合并/最小化它们(对开发有用)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.