首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UglifyJS可以替代RequireJS吗?

UglifyJS可以替代RequireJS吗?
EN

Stack Overflow用户
提问于 2013-09-30 21:07:38
回答 4查看 1.5K关注 0票数 2

老实说,我不明白RequireJS的好处。如果我使用UglifyJS缩小并连接我的所有文件,并在关闭的</body>标记之前放置单个得到的JS文件,我还需要使用RequireJS吗?除了在我的页面大小上增加15 to之外,RequireJS还提供了UglifyJS无法获得的好处?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-30 21:31:25

使用requireJs的要点是要有一种合理的方法来模块化代码。假设您有一个有上千行代码的应用程序,您不想在一个文件中处理所有这些。因此,如果开始将其拆分为不同的文件,则需要一种方法以正确的顺序加载所有单个文件。当然,您可以创建20个脚本标记,并确保它们的顺序是正确的,但是随着代码的增长,您必须添加更多的脚本标记,而对于每个文件,您必须找到正确的位置。这就是所需的is的好处。

假设您有一个3脚本,A.js依赖于B.js,而后者依赖于C.js

使用脚本标记,它将如下所示:

代码语言:javascript
复制
<script src="C.js"></script>
<script src="B.js"></script>
<script src="A.js"></script>


//A.js
  console.log('A' + B)
//B.js    
  B = 'B' + C
//C.js
  C = 'C'
})

带要求

代码语言:javascript
复制
<script src="require.js" data-main="A.js"></script>

在每个脚本中,您都声明了依赖关系:

代码语言:javascript
复制
//A.js
require(['B.js'], function (B) {
  console.log('A' + B)
})
//B.js    
define(['C.js'], function (C) {
  return 'B' + C
})
//C.js
define([], function () {
  return 'C'
})

这是一个非常简单的例子,但重点是您不必关心模块的顺序,因为需求is按正确的顺序加载模块。

回到您的问题,优化器更多地是一个加法,所以如果您有一个适合单个文件并且仍然可维护的小代码库,那么只需使用uglifyJs即可。但是,如果您想将代码拆分到模块中,则需要is。

票数 3
EN

Stack Overflow用户

发布于 2013-09-30 22:10:48

UglifyJS和RequireJS有着非常不同的目的,两者都可以适用于您的情况。

RequireJS和异步模块定义的基本思想是将代码分解成更小的块,从而使代码更易于管理。就业绩而言,它有两个主要好处:

  • 加载速度更快,因为可以并行加载多个块。
  • 较小的占用空间,因为您只加载当前上下文中真正需要的代码部分。

一个很好的例子是图表库。浏览器使用不同的标准来呈现图形: svg、vml、canvas等。图表库将为这些标准中的每一个提供代码,但在运行时它只会加载与特定设备和浏览器相关的部分。

票数 1
EN

Stack Overflow用户

发布于 2013-09-30 21:15:41

好吧,如果您对站点上的每个页面使用一个文件,那么代码重用将是非常糟糕的。

您不希望将相同的代码复制/粘贴到每个页面上。这些文件也不会被缓存,这将大大增加页面加载时间。

另见:‘s的“为什么”页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19103849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档