Require.js看起来像是一个基于模块的代码的完美解决方案。正如它在网站上提到的,它根据需要加载依赖关系(所以它更快)。但是当我们使用他们的r.js插件来缩小代码时基于单个文件,它加载整个组合文件。
这是否意味着它是正常的异步负载而不是按需负载?或者r.js内部有任何优化技术可以有效地完成这项工作吗?
答案 0 :(得分:-1)
根据需要加载单个JS模块有点像红色鲱鱼,因为将所有代码放入单个缩小的包中通常更好,即使大多数用户只会使用它的一个子集。 GZipping您的资源将使脚本的大小进一步减少33%-50%(至少),因此您最终可能会比单个JPEG文件小一些(当然,取决于项目的大小,当然)。
当突然加载单个文件时,网络本身就成为最大的瓶颈 - 浏览器限制了并行下载的次数(因此最终会按顺序加载文件),并且每个资源都会出现连接协商开销。再加上它使r.js
配置变得复杂这一事实我说只有当模块/库真正大并且仅被一小部分使用时,才应考虑按需加载用户。
AMD模块的真正好处实际上不是异步加载,而是代码组织 - 整齐有序的模块具有明确定义的依赖关系,编写错误或不可测试的代码要困难得多。