当前位置: 首页 > 工具软件 > RequireJS > 使用案例 >

requirejs的缺点

姚俊材
2023-12-01

【前言】

不知什么时候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。


 类似资料: