一个大javascript文件还是多个小文件?
好的,我有一个规模合理的项目,我使用jquery主干和其他几个javascript库。我想知道是否应该有一个用于javascript库的文件和另一个用于自定义代码的文件。或者一堆单独的javascript文件。最好将其分离出来,但不要过于热心。这样以后就可以重用库代码了。此外,每个人都更喜欢使用单独的文件,因为这样可以使事情更有条理一个大javascript文件还是多个小文件?,javascript,jquery,performance,web,Javascript,Jquery,Performance,Web,好的,我有一个规模合理的项目,我使用jquery主干和其他几个javascript库。我想知道是否应该有一个用于javascript库的文件和另一个用于自定义代码的文件。或者一堆单独的javascript文件。最好将其分离出来,但不要过于热心。这样以后就可以重用库代码了。此外,每个人都更喜欢使用单独的文件,因为这样可以使事情更有条理 也就是说,最好给用户一个压缩文件,这样所有内容都可以很容易地缓存,这也减少了页面请求的数量。例如,Rails 3会在资产管道中自动执行此操作。您可以编写一个脚本来运
也就是说,最好给用户一个压缩文件,这样所有内容都可以很容易地缓存,这也减少了页面请求的数量。例如,Rails 3会在资产管道中自动执行此操作。您可以编写一个脚本来运行您喜爱的压缩器。但是你不应该为了这个而牺牲代码的可读性——你也可以吃蛋糕 一个大文件。当代码投入生产时,您应该缩小代码,如果代码较大,则应进行压缩。您希望向服务器发出尽可能少的请求以提高页面性能通常,减少HTTP请求是一个好主意。因此,您应该尽可能合理地减少文件数量 我个人的偏好是有三组JavaScript文件:
正如所建议的,使用较小的文件是很好的,但是对于生产代码,您的构建过程应该包括优化。优化的一部分应该是最小化文件大小和网络流量优化,方法是合并到一个js文件中以减少浏览器的调用。通常,我使用尽可能少的文件来减少对服务器的请求数量。取决于应用程序的大小。但通常最好将javascript文件适当分组,以获得更好的可维护性和可重用性
您可以使用JS模块加载程序来加载JavaScript。至少这些文件将被组织起来。您可以通过确保这些文件可以缓存在用户浏览器上,以便用户只下载一次来提高服务器性能。一个大文件或两个文件:一个小文件和一个大文件。 要明确的是,在开发过程中最好有单独的文件-可能使用类似的东西。但当您部署它时,最好将所有内容压缩到一个文件中,以减少HTTP延迟和请求 我提到了两个文件。在某些情况下,最好有一个小文件,负责“引导”操作,同时下载“大文件”——特别是如果它真的很大的话。
这对于第一次访问特别有用,因为用户还没有缓存您的文件。将javascripts合并到一个文件中:由于这个答案不正确,人们正在进行向下投票。当然,您应该将js拆分为逻辑组件,以保持组织有序。但是您应该在将它们发送给用户之前将它们组合起来,以抑制http请求。只需将它们拆分为逻辑缓存组件,其中包含“永远不可能更改”、“有点可能更改”和“频繁更改”……这就是我的答案。你只想让用户缓存一个大文件。啊,自从我看到你的答案后,你编辑了它。(作为记录,我没有投反对票,只是想解释为什么投反对票)。是的,我的第一个答案只有第一部分。我想这是我应得的,因为我第一次没有清楚地解释开发和生产之间的区别。@bchurchill我认为您不需要生产的可读性,所以最好将http请求和网络延迟最小化到合理的程度。可读性只在开发时需要,我不同意。您应该在开发中分离文件,以便读取它们,然后使用一个部署脚本对其进行打包和压缩。没有人喜欢阅读精简的代码,但这正是您需要向用户提供的。@bchurchill——我在回答中说的“当它投入生产时”——从项目开始到部署,您如何维护代码是非常短暂的,与应用程序性能无关。运行时的可读性可能有利于教学,但会影响性能。为什么需要在初始页面加载时将所有JS文件嵌入到一个大文件中?谷歌的初始页面加载速度非常慢,你应该推迟JS文件和功能,这些在初始页面加载时并不需要(进入页面)。+1,回答得好,但我还要补充的是,有时你也可以通过创建两个或三个“大文件”来分离不经常更改的组件,从而挤出更多的性能(例如jquery之类的库)和将更频繁更改的组件(app js)。因此,如果你更改了应用程序,第一部分仍然会被缓存。当然,成本是多了一个http请求,所以YMMV就是这样。在我的应用程序中,我通常会这样做:一个文件引导应用程序,需要其他文件,一个文件用于框架js,一个文件用于应用程序js。当然,这确实取决于具体情况。我只是给出一个概述。想法是你没有两个选择——一个大文件或将所有文件分开——还有第三个选择——一个“引导”文件,然后是其他文件。你可以根据需要调整它。是的,你提到的引导文件就是为什么我认为这是最好的答案。为什么不使用类似Browserify的东西来捆绑所有文件呢