在使用一些 gem 时,虽然在 gemfile 中引用了 一般都还要额外的在 application.js, application.css 额外的 require 相关的 js, css 文件 请问这是什么原因了? 为何不能在 gem 中自己就自动加载这些 js,css,还要多操作一步,自己引用?
另外一个疑问是,如果几个相同的 gem 都使用了 bootstrap 或者同一种类库 会不会导致多次引用同一些 JS,CSS 的问题,rails 是怎么处理这个问题的?
你两个问题不是冲突了么。
@Rei 这个问题确实理解起来是冲突,一开始没注意到
应该这么说,假设 A gem 中引用了 bootstrap B gem 也引用 bootstrap
我的问题是, 在某个项目中都用到 A,B 两个 gem, 如果能做到 gem 中自己加载 js, css 的话,就不需要在项目的 application 中手动 require 了 但现在是需要自己手动 require,这是什么原因了
当然,实际情况是需要自己手动 require,所以避免了重复引用的问题
如果你的 gem 需要 bootstrap 支持,应该 require bootstrap-sass 这个 gem。
#2 楼 @luffycn 你应该举 jquery 的例子,rails 默认引入了 jquery,那么使用例如 ckeditor gem 的时候里面也包含 jquery,我没有具体看过,但我可以确定他一定有如下机制
if(window.jQuery === undefined) { // 引入jquery }
或者是
<!-- 加载jQuery1.5.2版本 --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <script type="text/javascript"> var jQuery_1_5_2 = $.noConflict(true); </script>
虽说 jquery 有自己的一套机制,但是我觉得他们一定会做的,不然这个 gem 就有待改进。
@ericguo 感谢回复,不过你不明白我问的问题是什么,我不是问怎么引入 bootstrap,而是问,假如我的一个项目中使用了 A,B 两个 GEM,如果这两个 gem 同时使用了某些 JS,CSS,他们是如何避免包重复引用的,这里的 bootstrap, 只是举例子说明,也有可能是 phantomjs, slimer 或者是其它的 CSS 之类的包
@flowerwrong 总算有人明白我在说什么了,感谢。。。你的思路是比较靠谱的
#5 楼 @luffycn ckeditor你也应该用 gem,然后 jquery-rails 提供 jquery,所以不会冲突,或者说你需要手工处理冲突。