【前言】
不知什么时候requirejs开始流行,前段时间开始使用,使用了一段时间后发现,
其实requirejs也不是万能的,也有不适合的场景。
【优点】
不得不说rj有很多优点,例如:
1.模块化
2.压缩
所以,适用的场景是:
1.公司有自己的前端部门,会自己开发前端相关插件,这个时候模块化是一个很好的选择
2.基于nodejs做webapp,nodejs+rj是一个很好的选择
3.开发游戏等
上面其实说了一件事情,就是当你的js都是自己写的,而且有很多js的时候rj很适用,
基本上就类似用java开发一个项目了,文件太多,所以需要分package和import
【缺点】
其实也不是什么缺点,但是有些场景是不适用的
1.小公司,不会自己去开发前端插件,而都是拿来插件就用的,
2.非nodejs开发,或非游戏开发
为什么这么说呢?
【rj之后事件都需要绑定】
1.使用rj之后,js都是后加载的,如果你在页面直接onclick=一个方法,
那么抱歉,这个方法找不到,所有的js方法都得写到rj中,
也就是普通的onclick,你都得换成$(document).on()的形式,
假设你有很多事件。。。
有人说事件委托,然后在方法内判断,想想都头大。。
2.插件
很多插件都是不支持amd或cmd的,
也就是使用了rj或者seajs之后,
如果要使用这些插件,
那你得自己把插件修改为符合amd或cmd规范的,
修改一两个还好,如果有很多插件。。
3.其实也就这些。
【总结】
1.大量js,或前端插件完全自己开发,或nodejs开发的场景适合rj
2.中小公司,喜欢使用现有插件的,慎用
【怀念】
<script type="text/javascript" src="${base}/WUI/rj/require.js"></script> <script type="text/javascript"> requirejs.config({ baseUrl : '${base}/WUI', paths : { jquery : 'http://cdn.staticfile.org/jquery/1.11.1/jquery.min', bootstrap : 'http://cdn.staticfile.org/twitter-bootstrap/3.2.0/js/bootstrap.min', qiao : 'qiao', login : 'web/js-src/login', modifypwd : 'web/js-src/modifypwd' }, shim : { bootstrap : { deps : ['jquery'], exports :'bs' } } }); </script>
({ baseUrl : '../', paths : { jquery : 'empty:', bootstrap : 'empty:', qiao : 'qiao', login : 'web/js-src/login', modifypwd : 'web/js-src/modifypwd' }, name :'web/js-src/home', out :'../web/js-min/home.min.js' // name :'web/js-src/manage', // out :'../web/js-min/manage.min.js' // name :'web/js-src/account', // out :'../web/js-min/account.min.js' // name :'web/js-src/project', // out :'../web/js-min/project.min.js' // name :'web/js-src/blog', // out :'../web/js-min/blog.min.js' })
require(['jquery', 'bootstrap', 'qiao', 'login'], function($, bs, qiao, login){ $(function(){ login.init(); qiao.ajaxinit(); }); });