什么时候我应该合并我的JS和CSS文件
When Should I Combine my JS and CSS Files?
我在这里浏览了许多关于如何以及为什么应该将JS/CSS文件结合起来以提高性能的文章,但是这些文章都没有提供任何关于何时使用的真正指导。
我正在开发一个单页微型网站,它使用7个Javascript文件(来自cdn的第三方插件和我自己的文件的混合)和8个不同的CSS文件(基本上每个插件一个,我自己编译的SASS文件)。
网站加载缓慢,即使在内部网在这里;我担心外面的表演。在昨天搜索几个插件时,我发现了几篇CodePen和插件文章,基本上说的是"酷孩子连接JS"(字面意思),这让我思考了整个事情。
在什么时候我应该开始连接和缩小我的Javascript/CSS?
我是否应该将CDN脚本粘贴到我自己的JS文件中,或者从长远来看,有另一个HTTP请求但使用静态服务的插件文件更好?
编辑:只是为了澄清-我不是要求工具/技术,但想知道什么时候组合和缩小文件变得重要-它应该总是做@RobG建议?
您应该向UAT交付尽可能接近产品代码的代码,包括所有的最小化和文件组合。如果你不这样做,那么你没有做正确的UAT
老实说,这要看情况。人们常常错误地痴迷于并购……但情况并非总是如此。对merge-min的需求取决于以下几点:有时加载两个css文件比加载一个大文件更快更好?为什么?因为它们是并行加载的。那么简单。
所以不要沉迷于合并最小值。如果你的用户是回头客,那么就合并并依赖浏览器缓存。如果没有,通过不合并来优化并行负载。
并忽略简单的:'是的,你必须合并,因为这是10年前最好的,我从来没有质疑过':)
我应该什么时候合并我的JS和CSS文件?
每次完成开发时。特别是当您的代码要进行用户验收测试(UAT)时,如果不是更早的话。谢谢@RobG的提醒。
你建议用什么工具?
Browserify
让我们从JS文件开始。我认为一个捆绑各种JS文件/模块的好工具是Browserify。
浏览器没有定义require方法,但是Node.js有。使用Browserify,您可以编写使用require的代码,就像在Node中使用require一样。
下面是一个关于如何在命令行上使用Browserify来捆绑一个名为main.js
的简单文件及其所有依赖项的教程:
var unique = require('uniq');
var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];
console.log(unique(data));
使用npm安装uniq模块:
npm install uniq
现在用browserify命令将main.js开头的所有必需模块递归地打包到一个名为bundle.js的文件中:
browserify main.js -o bundle.js
Browserify解析AST中的require()调用,以遍历项目的整个依赖关系图。在html中添加一个标签,就完成了!
<script src="bundle.js"></script>
还有一个类似的用于CSS文件的工具叫做browserify-css。
口
gulp是一个工具包,它将帮助您在开发工作流中自动执行痛苦或耗时的任务。对于web开发(如果这是你的事情),它可以通过CSS预处理、JS编译、最小化、实时重新加载等等来帮助你。所有主要的ide都内置了集成,人们喜欢PHP、。net、Node.js、Java等的集成。有超过1700个插件(没有插件你也可以做很多事情),gulp可以让你停止对构建系统的干扰,回到工作中来。
公共CDN脚本
我应该将CDN脚本粘贴到我自己的JS文件中,还是从长远来看,有另一个HTTP请求但使用静态服务的插件文件更好?
您可以将它们保存在公共CDN中;为了避免不必要的服务器过载,浏览器限制了可以同时建立的连接数量。根据浏览器的不同,这个限制可能低至每个主机名两个连接。使用公共CDN(如Google AJAX Libraries CDN)消除了对站点的一次请求,允许并行下载更多本地内容。点击这里阅读更多内容
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- 使用Javascript读取CSS文件并动态更改页面
- js和css文件-在publichtml外部或内部
- Google PageSpeed Insights与多个CSS文件
- Javascript:动态更改CSS文件+Cookie
- 没有在django项目中加载CSS文件
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- Chrome审核:在外部CSS文件之间的头中发现了1个内联脚本块&”;
- 使用新的 CSS 文件覆盖当前网站
- 多余的JS和CSS文件
- 快递.js无法获取我的 CSS 文件
- 无法查找元素'手动加载CSS文件时的CSS属性
- jquery移动应用程序无法使用jquryMobile框架JS和css文件的相对路径
- 不同的引导 CSS 文件
- 加载CSS文件并覆盖上一个文件
- 使用 JavaScript 动态加载 CSS 文件
- 如何使用谷歌页面速度CSS加载脚本延迟多个CSS文件
- 在 html 文件中包含无缓存元标记是否也会阻止缓存该 html 文件中链接的 js 和 css 文件
- Spring MVC 集成 js 和 css 文件
- 如何将 JavaScript 和 CSS 文件添加到 MagentoModule