对于网络专家来说,这可能是一个愚蠢的问题。但是我对此有些困惑。现在,我有一个应用程序,使用两个Javascript文件执行不同的任务。现在,我正在使用Javascript捆绑器来合并和缩小所有文件。因此,在运行时将只有一个app.min.js文件。现在,Requirejs用于在运行时加载模块或文件。所以,问题是,如果我已经将所有内容都放在一个文件中,那么我是否需要requirejs?或者在什么情况下可以使用requirejs和/或bundler?
请让我知道是否需要更多详细信息。
Answers:
在许多精通JavaScript的开发人员中,这是一个备受争议的问题。许多其他语言都有一个“编译”阶段,其中整个程序都捆绑在一起进行部署(想到了JBoss的.WAR文件)。来自更传统背景的程序员经常喜欢这种方法。
近年来,Javascript的增长如此之快,以至于很难绘制出准确的最佳实践,但是欣赏Javascript的更多功能特性的人通常更喜欢模块加载方法(例如require.js的用法)。
我写的Frame.js的工作方式与require.js相似,所以我偏向于模块加载器方法。
要直接回答您的问题,是的,一个或另一个。
大多数主张将脚本打包到单个文件中的人都认为,它可以实现更多压缩,因此效率更高。我认为打包的效率优势在大多数情况下可以忽略不计,因为:(1)模块加载时间分布在整个会话中;(2)各个模块的压缩率几乎相同,(3)各个模块可以缓存(4)仅在最终需要它们时才加载脚本,这样您才能为某些用户加载较少的代码,而总体上加载更多的代码。
从长远来看,如果您可以看到动态脚本加载的优势,请使用它。如果没有,请将脚本捆绑到一个文件中。
通常,在开发过程中,仅以其加载形式使用RequireJS。站点完成并准备好部署后,您可以缩小代码。这样做的好处是RequireJS完全知道您的依赖项,因此可以轻松地以正确的顺序缩小代码。这是在RequireJS网站上显示的内容:
一旦完成开发并希望为最终用户部署代码,就可以使用优化器将JavaScript文件组合在一起并进行最小化。在上面的示例中,它可以将main.js和helper / util.js合并到一个文件中并最小化结果。
这取决于您的应用程序。如果您要使用仅适度的javascript(最小化少于100kb)制作服务器端应用程序,然后进行总捆绑销售,则可能会很好。
但是,如果您要编写一个javascript应用程序,并且其中包含大量代码,那么您的需求将会有所不同。
例如,在我的应用程序中,我捆绑了所有核心文件。jQuery,下划线,主干,我的主要应用程序文件,用户登录系统,布局系统,通知和聊天系统都是我的初始文件的一部分。
但是,我还有许多其他模块,它们不属于初始捆绑包,而是在这些捆绑包之后加载的。
论坛,Wiki,所见即所得,颜色选择器,拖放,日历和一些动画文件是第二类的一部分。您需要对常用和立即需要的内容以及可以延迟的内容做出合理的决定。
如果我立即包含所有内容,我将获得超过mega的javascript,这将是疯狂的,并使初始启动缓慢得令人无法接受。
initSuccess
事件从初始文件触发后,第二类开始下载。
但是第二个类别比第一个类别更智能,因为它首先加载更重要的内容。例如,如果您正在查看Wiki,它将先加载Wiki,再加载颜色选择器。