Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否删除RequireJS中未使用的垫片配置?_Javascript_Twitter Bootstrap_Requirejs_Gruntjs_Shim - Fatal编程技术网

Javascript 是否删除RequireJS中未使用的垫片配置?

Javascript 是否删除RequireJS中未使用的垫片配置?,javascript,twitter-bootstrap,requirejs,gruntjs,shim,Javascript,Twitter Bootstrap,Requirejs,Gruntjs,Shim,好的,我的问题是,我希望能够自动删除我为RequireJS设置的部分垫片配置;我没有加载整个缩小的引导文件,而是将其拆分为不同的插件,这样当我的应用程序使用较少的引导组件时,我就可以获得较小的文件大小。例如: require.config({ paths : { jquery : 'vendor/jquery/jquery.min', bootstrap : 'vendor/bootstrap-sass/js' }, shim :

好的,我的问题是,我希望能够自动删除我为RequireJS设置的部分垫片配置;我没有加载整个缩小的引导文件,而是将其拆分为不同的插件,这样当我的应用程序使用较少的引导组件时,我就可以获得较小的文件大小。例如:

require.config({
    paths : {
        jquery     : 'vendor/jquery/jquery.min',
        bootstrap  : 'vendor/bootstrap-sass/js'
    },
    shim : {
        'bootstrap/affix': { deps: ['jquery'], exports: '$.fn.affix' },
        'bootstrap/alert': { deps: ['jquery'], exports: '$.fn.alert' },
        'bootstrap/button': { deps: ['jquery'], exports: '$.fn.button' },
        'bootstrap/carousel': { deps: ['jquery'], exports: '$.fn.carousel' },
        'bootstrap/collapse': { deps: ['jquery'], exports: '$.fn.collapse' },
        'bootstrap/dropdown': { deps: ['jquery'], exports: '$.fn.dropdown' },
        'bootstrap/modal': { deps: ['jquery'], exports: '$.fn.modal' },
        'bootstrap/popover': { deps: ['jquery'], exports: '$.fn.popover' },
        'bootstrap/scrollspy': { deps: ['jquery'], exports: '$.fn.scrollspy'        },
        'bootstrap/tab': { deps: ['jquery'], exports: '$.fn.tab' },
        'bootstrap/tooltip': { deps: ['jquery'], exports: '$.fn.tooltip' },
        'bootstrap/transition': { deps: ['jquery'], exports: '$.support.transition' },
    }
});

虽然
r.js
优化器正确地识别出我只使用了
bootstrap/dropdown
,但它仍然包含了不在生产代码中的文件的垫片配置。所以我的问题是,我能自动清除未使用的垫片文件吗?我正在使用
grunt contrib requirejs
进行实际的优化,并且没有任何问题。基于Grunt的解决方案会更好,但我愿意接受其他任何东西。谢谢。

总结上面的要点,并希望结束问题

  • r.js不会删除未使用的垫片配置,因为它无法知道您在运行时是否需要它们
  • 约175字节(gzip)不值得手动优化,尤其是作为200倍于此的有效负载的一部分,而且不会带来明显的改善
  • 这可能是一种自动化的方法,可以完全取消脚本的AMD,从而满足您节省大小的需求

只是好奇。。。为什么?它不是只有12行(或更少)和~700字节的代码吗,是的,但是在一个大约550KB的“优化”JavaScript负载(引导、requirejs、下划线、主干、d3、jquery加自定义代码)中,我能做的任何减少文件大小的事情都是值得的。因此,稍微减少一点代码,为什么不从每个jQuery插件中删除
导出
?我把它放进去是因为这个线程:它说我需要定义一个exports变量。好的,这将大大减少代码,有没有办法按照我原来的问题去掉剩下的代码?;-)可能想看看这个:它将删除所有AMD配置重载,您需要在代码中限制一些AMD模式,但它可能适合您的需要。感谢您撰写此文章。:-)