rails项目中js代码管理
在rails项目中写页面时总少不了用js实现一些动态效果,比较幸运的是rails默认引入jquery,这就意味者我们可以非常方便的使用jquery库,并且这也是rails支持的方式.在刚开始写jquery代码的一段时间里,通常直接在页面中写js代码
当然这样写是非常不好的,如果后期js代码越来越多,维护起来会很困难,尤其当js和html代码不是一个人写的时候.所以用引入插件的方式(笔者目前水平还写不出一个大的插件),通过DOM对象引用我们定义的方法实现更好,这样我们可以把js代码放在assets/javascript目录下面:
那么问题来了,我们的js文件并不是作用于项目的每个页面,如果通过application全部require进来,有的页面因为不需要这段代码,会报错找不到相应的dom对象.那现在就要考虑如何让相应的js文件仅作用于对应需要该效果的页面, 你可以参考这里:http://brandonhilkert.com/blog/page-specific-javascript-in-rails/
思路:首先我们先给每个页面的body添加一个独有的类,然后让拥有这个类的页面来加载这段js代码.
在js文件中写js代码:
这就保证了这段js代码只会应用在home#index这个页面中。
下面说说在如何写个简单的插件:
注意事项:
-
;(function(){ })(jQuery);的写法. 前面”;”为了避免在前面有别人写的代码忘记使用;结束时造成的错误.
-
jquery插件的3中开发方式(这里采用的是第二种方式)
通过$.extend() 来拓展jquery(只定义用于jquery本身的静态方法, 类别级)
通过$.fn向jquery添加新的方法(最佳用于jquery插件开发, 定义可用于全局jquery对象的方法, 对象级)$.fn=$.prototype
通过$.widget()应用jquery ui的部件工厂方式创建。(该方式较为复杂,一般不会使用)