【前言】
不知什么时候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都是后加载的,如果你在页面直接οnclick=一个方法,
那么抱歉,这个方法找不到,所有的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();
});
});
ok,鉴于现在不会自己开发插件,所以回到普通的js引入方式,放弃rj。