rails4 引入 Assets Pipeline,lib,app,vendor 三个目录下的 assets 会被压缩了,当然这是可以关闭的。但是单独使用 js 插件,例如百度编辑器时,其中的一些组件通常是按需加载,通常将他们放在那里呢?public?
#1 楼 @dddd1919 你的意思是一整个插件还是按照他的原有目录存放在 public 下,自己手动加载主文件,不要被 assets pepeline 压缩吗?例如http://ueditor.baidu.com/website/download.html
/public 下吧 第三方的 js 库没必要通过 rails 的 pipline,由第三方维护即可,而且复杂的 js 库在多文件中还会互相引用,甚至需要同时引用不同版本的第三方库 百度编辑器实际引用的文件就几个而已,不用全放到自己的项目里
用 gem 装 assets, 然后 application.js 里面 require。如果没有现成 gem 的话就自己写一个,很简单的。第三方的文件最好不要放到 repository 里面,添乱。
@dddd1919 放到/public 里面等于是把应用的逻辑交给部署来维护,这不合适。
@flowerwrong 你是说样板 gem?我随便找了一个
https://github.com/argerim/select2-rails
基本写法就是,一个/app/assets/目录,下面按常规放你的 assets, js, css, image
然后/lib/两个文件,select2-rails.rb, /lib/select2-rails/engine.rb, 只有几行。照抄换文件名目录名就行。然后就可以了,放到 github 然后定义gem 'baidujs', git: 'my_gi_repo'
。然后 require,收工。
以后 js 文件升级直接在 gem 里面升。你既可以指定版本也可以直接用 github, 反正每次 bundle install 都要去拿最新的 master,或者也可以指定 commit。
@flowerwrong 说明他那个组织得并不好,凑合着用吧。CSS 就算写成一个文件都可以模块化,只要名字定义合适的话。混在一起 build 起来各种麻烦。
你写个 gem 自己把文件组织好也是创造了很多价值的事情啊。以后别人就可以直接用你的 gem 了。