Eli*_*kes 3 javascript ruby-on-rails asset-pipeline angularjs
我想有选择地压缩Rails 3.2应用程序中的一些javascript文件,但仍然在生产环境中从单个捆绑文件提供所有js资产.
像这样的语法,在app/assets/javascripts/application.js文件中,使用传递给最后3个sprockets 指令的make -up :compress => false
选项,require
我希望解释我想要实现的目标.
// Contents of app/assets/javascripts/application.js
//
//= require jquery
//= require jquery_ujs
//= require angular-1.0.1/angular, :compress => false
//= require angular-1.0.1/angular-resource, :compress => false
//= require products, :compress => false
Run Code Online (Sandbox Code Playgroud)
因此jquery.js和jquery_ujs.js文件将被压缩(通过Rails资产编译,默认使用UglifierJS),其余3个文件将不会被压缩,但它们将被捆绑到application.js包中.
有没有办法做到这一点?
其动机是products.js文件包含一个angularjs控制器,该控制器使用angular的依赖注入,这需要特定的变量名称,例如$scope
并且$http
不会被更改.
我在config/environment/production.rb文件中使用此行
config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }
它压缩我的控制器,但它不会改变方法签名,所以DI仍然按预期工作.
为了使这与Rails 4一起使用,因为它使用了我使用的更新版本的链轮:
config.assets.js_compressor = Uglifier.new(mangle: false) if defined? Uglifier
在environment/production.rb中
归档时间: |
|
查看次数: |
2572 次 |
最近记录: |