AngularJS Grunt使用动态查询字符串参数加载JS文件

时间:2015-01-23 11:20:34

标签: angularjs gruntjs yeoman yeoman-generator-angular

我正在用yeoman + grunt + angularJs开发应用程序。

仅在需要我在calendar.html中添加了JS文件路径时才加载JS文件。

为了达到这个目的,我修改了grunt.js和html文件。

Grunt.JS档案

useminPrepare: {
        html: ['<%= yeoman.app %>/index.html', '<%= yeoman.app %>/views/*.html'],
        options: {
            dest: '<%= yeoman.dist %>',
            flow: {
                html: {
                    steps: {
                        js: ['concat', 'uglifyjs'],
                        css: ['cssmin']
                    },
                    post: {}
                }
            }
        }
    }

已修改的calendar.html文件

<!-- build:js({.tmp,app}) scripts/fullcalendar.js -->
  <script src="scripts/plugins/fullcalendar/fullcalendar.js"></script>
<!-- endbuild -->

此解决方案正常运行。但是现在每当我加载我的日历页面时,一个新的请求会转到fullcalenar.js,并带有动态查询字符串参数,如下所示

http://localhost/scripts/fullcalendar.a13f9b72f8.js?_=1422010995753

每次发出阻止浏览器缓存文件的请求时,此编号(1422010995753)都会递增。

我相信这是因为assetCacheBuster,但这是我的Grunt配置。我将它与debugInfo一起设置为false。

   compass: {
        options: {
            javascriptsDir: '<%= yeoman.app %>/scripts',
            fontsDir: '<%= yeoman.app %>/styles/fonts',
            importPath: './bower_components',
            relativeAssets: false,
            assetCacheBuster: false,
            raw: 'Sass::Script::Number.precision = 10\n'
        },
        server: {
            options: {
                debugInfo: false
            }
        }
    }

我的问题是,我想缓存fullcalendar.js文件,并且不想每次都获取新的JS文件。

如果我在index.html文件应用程序内部的calendar.html代码上移动正常工作并缓存文件而不与其他js组合。但是如果我在index.html中添加该代码,则fullcalendar.js文件将加载第一页本身。

1 个答案:

答案 0 :(得分:0)

迟到的回答:grunt-cachebuster-querystring