Search code examples
ruby-on-railssprocketsruby-on-rails-7import-maps

assets/config/manifest.js vs. assets/javascripts/application.js


application.js also specifies other javascript files, and originally //=require_* statements in application.js were included in assets:precompile task. Now, the role of selecting files in assets:precompile in Sprocket 4, what is the role of application.js?


Solution

  • In Rails 6 and earlier, application.js was used to define the entry point for your JavaScript application. This meant that all of your JavaScript code would be included in this file, which could make your application slower to load. In Rails 7, application.js is no longer used for this purpose. Instead, you should use manifest.js to specify which JavaScript files should be included in the asset pipeline. This will allow you to load only the JavaScript files that you need, which will improve the performance of your application.

    manifest.js is a simple file that contains directives that tell Sprockets which JavaScript files to include. These directives are special comments that start with a double forward slash (//=). For example, the following directive would include the jquery.js and application.js files in the asset pipeline:

    //= require jquery
    //= require application
    

    Any files that are specified in application.js will also be loaded by the asset pipeline. This is because manifest.js only specifies the minimum set of files that are required for your application to function. Any other files that you need can be included in application.js.