我目前将 Angular 与 ng-routes、ng-table 和 ng-animate 一起使用。我还使用其他库,例如 jQuery 和 Modernizr。最后我有我自己的自定义 javascript,它可以是多个文件。
所以我的项目会加载一长串这样的资源:
<script type="text/javascript" src="/lib/jquery.min.js"></script>
<script type="text/javascript" src="/lib/modernizr.min.js></script>
<script type="text/javascript" src="/lib/angular.min.js"></script>
<script type="text/javascript" src="/lib/angular-route.min.js"></script>
<script type="text/javascript" src="/lib/angular-animate.min.js"></script>
<script type="text/javascript" src="/js/custom.js"></script>
我知道我可以通过减少 HTTP 调用和压缩所有文件来加速我的项目。
我使用 CodeKit,它提供了将 JS 文件相互导入并将它们编译成单个压缩文件的选项。如果我为上面的列表执行此操作,那么我只需加载一个像这样的文件:
<script type="text/javascript" src="/js/main.min.js"></script>
单个 HTTP 调用而不是 6+,并且所有代码都被缩小了。这里的问题是单个文件是 500kb+ 并且在一个完整的项目中会大得多,可能超过 1mb。
- 这是否意味着文件不会因为太大而被浏览器缓存?
- 以这种格式编译时,Angular 或其他库运行时会出现任何问题吗?(如果 .map 文件不在同一目录中,控制台会抛出错误)
- 当然,一个 500kb 以上的文件仍然需要很长时间才能加载,那么这真的会缩短加载时间吗?
我看到它的方式是它必须等待整个大文件加载才能执行任何操作。而如果文件是分开的,它们可以在每个加载后立即开始执行脚本。