Is it better to minify javascript into a single bundle for the whole site, or a specific-to-each-page bundle?

后端 未结 4 1537
萌比男神i
萌比男神i 2021-01-03 22:18

When minifying JavaScripts together in web-development, is it better from the user-loading-time point of view to:

  1. make one single big bundle of JavaScript cont
相关标签:
4条回答
  • 2021-01-03 23:10

    It depends entirely on what's in your scripts. If you've got loads of small functions which are used by a wide selection of pages then yes, a single file will be best. If you've got a large script that's only used by one page, you wouldn't typically want to slow down the initial front-page load time by including it in the shared script.

    So what you will typically end up with is a compromise, with base functions shared across all pages in one script, and the more complex and specific functions in per-page or per-page-group scripts. It'll very rarely be beneficial to go the whole option-2 hog and have a completely separate script for each page.

    Having shared functions in one file and separate page-specific complex scripts is also typically more maintainable.

    0 讨论(0)
  • 2021-01-03 23:11

    It really depends on the sizes and functions of the script. It's common to have a single master.js for all your pages, which contains all the functionality required by every page of your site, whilst having other js files for functionality that might only be needed on certain pages.

    Take Stack Overflow, for instance. They have a master.js file included on every page of the site, but when you visit a question page or the "ask a question" page you'll notice wmd.js. This script includes all the functionality for the editor which is needed on fewer pages.

    0 讨论(0)
  • 2021-01-03 23:11

    I would much rather have 1 minified js file for the entire site. Over a period of time this always performs better than having multiple js files.

    Check out this link for more details

    0 讨论(0)
  • 2021-01-03 23:16

    If you are implementing websites in ASP.NET MVC, then you may find the following approach as the most sensible, one which I use all the time.

    Make a list of all of the JavaScript files used in the project - ones used everywhere and those used by many or most pages. This defines your common bundle, which you should include from your master page. MVC4's Bundle & Minification feature does the magic there, you just need to list them.

    The rest of JavaScript is usually for local use, i.e. within just one view, effectively implementing the view. And for that reason it should reside within the view, completely uncompressed.

    For example, I make extensive use of AngularJS within views, so each such view contains its own angular controller and other local elements as needed. Depending on the view complexity, it can even have its own set of directives, services and factories, although typically those go into a partial view of one-two levels up.

    The bottom line is, do not try to burden yourself with bundling JavaScript that's meant for local use. Bundle only the most generic stuff, and do it in just one place - your product's master page. Leave local JavaScript uncompressed in local files where it is used. This has no real effect on performance, while making your code much easier to understand and maintain.

    0 讨论(0)
提交回复
热议问题