【发布时间】:2011-03-10 10:48:51
【问题描述】:
我的 Rails 应用程序现在进步很大,我想正确压缩包含的 JS 文件(带有插件的 Aloha 编辑器 + Gritter,用超过 1MB 的 JS 组成多个文件)。我决定使用 Jammit,因为它具有良好的 Rails 集成。这是我的 config/assets.yml:
package_assets: always
javascript_compressor: closure
compressor_options:
compilation_level: ADVANCED_OPTIMIZATIONS
javascripts:
admin:
- public/aloha/aloha.js
- public/aloha/plugins/com.gentics.aloha.plugins.Format/plugin.js
- public/aloha/plugins/com.gentics.aloha.plugins.Table/plugin.js
- public/aloha/plugins/com.gentics.aloha.plugins.List/plugin.js
- public/aloha/plugins/com.gentics.aloha.plugins.Link/plugin.js
- public/javascripts/*.js
- public/javascripts/gritter/*.js
解释:aloha.js 是一个扩展的 jQuery 1.4.2 库,/javascripts/.js 和 /gritter/.js 中的文件主要依赖它(jQuery)。 我在我的视图代码中包含标签
<%= include_javascripts :admin %>
直截了当。
当切换到开发模式(assets.yml 有 package_assets: 开启)时,Jammit 会单独处理 JS 文件并将它们一个一个嵌入,我的应用程序就很好了。
然而,当处于生产模式时(env = :production,或者 assets.yml 有 package_assets: 总是),Jammit 会创建一个大约 700kB 的压缩 JS 文件(哇,那是一个胖怪物),它可以正确嵌入,但我得到了一个页面加载时出现 JS 错误“jQuery 未定义”。我的第一个猜测是 JS 文件的顺序在编译过程中发生了变化,即使它不应该?
还有一件事:让压缩器保持默认 (yui) 会导致加载时出现更严重的 JS 错误。
有人可以帮帮我吗?
【问题讨论】:
标签: jquery ruby-on-rails-plugins jammit