何时使用Requirejs以及何时使用捆绑的JavaScript?
这可能是一个愚蠢的问题,networking家伙。 但是我对此有点困惑。 现在,我有一个应用程序,我正在使用几个JavaScript文件来执行不同的任务。 现在,我正在使用Javascript 捆绑器来合并和缩小所有的文件。 所以,在运行时将只有一个app.min.js文件。 现在, Requirejs被用来在运行时加载模块或文件。 所以,问题是如果我已经在一个文件中的所有东西,那么我需要requirejs? 或者,我可以使用requirejs和/或bundler的用例场景是什么?
请让我知道是否需要进一步的细节。
这是许多熟练的JavaScript开发人员中激烈争论的问题。 许多其他语言都有一个“编译”阶段,整个程序被捆绑在一起进行部署(JBoss的.WAR文件出现)。 程序员来自更传统的背景往往赞成这种做法。
近年来,Javascript已经看到了这样的增长,很难确定最佳实践,但那些赞赏Javascript的更多function特性的人通常更喜欢模块加载方法(比如require.js使用)。
我写了很像require.js的Frame.js,所以我偏向于模块加载器方法。
要直接回答你的问题,是的,这是一个或另一个。
大多数人认为把你的脚本打包成一个文件相信它能够实现更多的压缩,从而提高效率。 我相信在大多数情况下封装的效率优势是可以忽略的,因为:(1)模块加载时间分布在整个会话中,(2)单个模块可以被压缩到几乎相同的百分比,(3)单个模块可以被caching服务器和路由器,以及(4)仅在需要时才加载脚本允许您为一些用户加载更less的代码,并且更多地编码。
从长远来看,如果您能看到dynamic脚本加载的优势,请使用它。 如果不是,将脚本捆绑到一个文件中。
一般来说,你只能在开发过程中使用RequireJS的加载forms。 一旦网站完成并准备好部署,就可以缩小代码。 这里的优点是RequireJS确切地知道你的依赖关系是什么,因此可以很容易地按照正确的顺序来缩小代码。 以下是它在RequireJS网站上的说明 :
完成开发并想要为最终用户部署代码后,可以使用优化器将JavaScript文件合并在一起并缩小。 在上面的例子中,它可以将main.js和helper / util.js合并成一个文件并缩小结果。
这取决于你的应用程序。 如果你只用适度的javascript制作一个服务器端的应用程序(小于100kb缩小)然后去捆绑,你可能会没事的。
但是,如果你正在制作一个JavaScript应用程序,并有大量的代码,那么你的需求将会有所不同。
例如,在我的应用程序中,我捆绑了所有的核心文件。 有jQuery,下划线,主干,我的主要应用程序文件,我的用户login系统,我的布局系统,我的通知和聊天系统,都是我的大型初始文件的一部分。
但是我还有很多其他的模块,它们不是初始包的一部分,而是在那些之后加载的。
论坛,wiki,wysiwyg,颜色select器,拖放,日历和一些animation文件是第二类的一部分。 您需要立即做出合理的决定,以便立即采取什么措施,哪些措施可以推迟。
如果我立即包括所有的东西,我可以得到超过一个JavaScript的,这将是疯了,使初始启动无法接受的缓慢。
第二类在initSuccess
事件从初始文件触发后开始下载。
但是第二类比第一类更聪明,因为它首先加载了更重要的东西。 例如,如果您正在查看wiki,则会在加载颜色select器之前加载wiki。