何时使用Requirejs以及何时使用捆绑的javascript?

时间:2012-09-02 01:47:56

标签: javascript requirejs servicestack

对于网络人来说,这可能是一个愚蠢的问题。但我对此感到有些困惑。现在,我有一个应用程序,我使用几个Javascript文件来执行不同的任务。现在,我使用Javascript bundler来组合和缩小所有文件。因此,在运行时只有一个app.min.js文件。现在,Requirejs用于在运行时加载模块或文件。所以,问题是如果我已将所有内容都放在一个文件中,那么我是否需要requirejs?或者什么是用例场景,我可以使用requirejs和/或bundler?

如果需要进一步的详细信息,请告诉我。

3 个答案:

答案 0 :(得分:48)

通常,您在开发期间仅在其加载形式中使用RequireJS。站点完成并准备部署后,您将缩小代码。这里的优点是RequireJS确切地知道你的依赖是什么,因此可以很容易地以正确的顺序缩小代码。以下是RequireJS website上的内容:

  

完成开发并希望为最终用户部署代码后,您可以使用优化器将JavaScript文件组合在一起并缩小它。在上面的示例中,它可以将main.js和helper / util.js组合到一个文件中并缩小结果。

答案 1 :(得分:28)

这是许多熟练的JavaScript开发人员中一个备受争议的问题。许多其他语言都有一个“编译”阶段,整个程序捆绑在一起进行部署(JBoss的.WAR文件会浮现在脑海中)。来自更传统背景的程序员通常喜欢这种方法。

Javascript近年来已经出现了这样的增长,很难确定最佳实践,但那些喜欢Javascript功能更强的人通常更喜欢模块加载方法(如require.js使用)。

我写了Frame.js,其功能与require.js非常相似,所以我偏向于模块加载器方法。

直接回答你的问题,是的,它是一个或另一个。

大多数认为将脚本打包到单个文件中的人认为它可以实现更多压缩,从而提高效率。我相信在大多数情况下,包装的效率优势可以忽略不计,因为:(1)模块加载时间分布在整个会话中,(2)单个模块可以压缩到几乎相同的百分比,(3)单个模块可以缓存单独的服务器和路由器,以及(4)仅在需要时加载脚本最终允许您为一些用户加载更少的代码和更多的代码。

从长远来看,如果您能看到动态脚本加载的优势,请使用它。如果没有,请将脚本捆绑到一个文件中。

答案 2 :(得分:11)

这取决于您的申请。如果您正在制作一个服务器端应用程序只有适度的javascript(小于100kb缩小)然后去完全捆绑,你可能会没事。

但如果您正在制作一个javascript应用并且其中包含大量代码,那么您的需求将会有所不同。

例如,在我的应用程序中,我捆绑了所有核心文件。有jQuery,下划线,主干,我的主要应用程序文件,我的用户登录系统,我的布局系统,我的通知和聊天系统,都是我的大型初始文件的一部分。

但我还有许多其他模块,它们不是初始包的一部分,在那之后加载。

论坛,wiki,wysiwyg,颜色选择器,拖放,日历和一些动画文件是第二类的一部分。你需要立即做出合理的决定,然后立即采取什么措施,哪些措施可以推迟。

如果我立即包含所有内容,我可以获得超过一个巨大的javascript,这将是疯狂的,并使初始启动速度慢得令人无法接受。

第二个类别从初始文件触发initSuccess事件后开始下载。

但是第二类比第一类更智能,因为它首先加载了更重要的东西。例如,如果您正在查看维基,它将在加载颜色选择器之前加载维基。