解决requirejs的r.js压缩排除jquery时造成的错误

作者:norion时间:2015年9月29日评论次数:0 条

原来项目中的前端的用requirejs进行模块化,当时考虑将所有的js资源全部封装成一个文件,但是后来发现同事将jquery写在require外围造成不少问题,为了解决这个问题不得不限制jquery的适用范围,造成很多不适,后来干脆直接将jquery从requirejs中排除,而jquery版本则是引用网络上公共的CDN库。

<script src="CDN公共库的jquery地址"></script>
<script>
if( !window.jQuery ){
 var scriptEle = document.createElement('script'),
 headEle = document.head || document.getElementsByTag('head');
 scriptEle.src = "本地的jquery地址";
 headEle[0].appendChild(scriptEle);
}
</script>
<script data-main="main" src="require.js"></script>

解决了上面说的问题之后,问题又来了,我们之前的代码都是通过requirejs来构建的,其中很多模块都依赖于jquery,贸然的将jquery抽离之后,发现代码跑不动了,后来才发现原来单纯的抽离会出差错,因为requirejs是AMD规范,是将依赖前置,所以为了解决这个问题,有了如下方案,我们手动定义一个jquery,模块里面直接返回jquery对象,然后在data-main内直接引用这个模块。

define('jquery', [] , function(){
    return jquery;
});

上一篇: 原生实现类似jquery append方法

下一篇:快速删除node_modules目录

相关文章

评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注