Rails rails4 引入 Assets Pipeline,怎样放置多目录的 js 文件,例如富文本编辑器

flowerwrong · 2014年07月03日 · 最后由 Rei 回复于 2014年07月06日 · 4647 次阅读

rails4 引入 Assets Pipeline,lib,app,vendor 三个目录下的 assets 会被压缩了,当然这是可以关闭的。但是单独使用 js 插件,例如百度编辑器时,其中的一些组件通常是按需加载,通常将他们放在那里呢?public?

按需加载直接放在 public 里对应的请求位置就行

#1 楼 @dddd1919 你的意思是一整个插件还是按照他的原有目录存放在 public 下,自己手动加载主文件,不要被 assets pepeline 压缩吗?例如http://ueditor.baidu.com/website/download.html

如果百度编辑器的 js 自己会按需加载的话,就把它需要加载的文件放到 public 对应请求位置下,这个富文本功能真全,就是太丑了 😄

/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。

#8 楼 @billy thx billy.我看了这个 gem 的写法,但是他只涉及差不多两个 js 文件和两个 css,但是富文本编辑器通常是模块化的。这样的就有许多的 js 和 css,如果做成 gem,我就需要把 js 文件都提出来放在 js 目录下,但是这样就要改源码以适配 js 路径。

@flowerwrong 说明他那个组织得并不好,凑合着用吧。CSS 就算写成一个文件都可以模块化,只要名字定义合适的话。混在一起 build 起来各种麻烦。

你写个 gem 自己把文件组织好也是创造了很多价值的事情啊。以后别人就可以直接用你的 gem 了。

放 public。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号