基于RequireJS和JQuery的模块化编程——常见问题全面解析

前端之家收集整理的这篇文章主要介绍了基于RequireJS和JQuery的模块化编程——常见问题全面解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_502_0@由于js的代码逻辑越来越重,一个js文件可能会有上千行,十分不利于开发与维护。最近正在把逻辑很重的js拆分成模块,在一顿纠结是使用requirejs还是seajs的时候,最终还是偏向于requirejs。毕竟官方文档比较专业嘛...


@H_5020@不过即便是有完整的官方文档,仍然遇到不少的问题,比如jquery-ui的使用。


@H
502_0@下面就循序渐进的讲解一下我遇到的问题,以及解决的办法。


@H_5020@

关于AMD和CMD的理解


@H
5020@AMD(异步模块定义)的典型就是requirejs,而CMD(通用模块定义)的典型是淘宝的seajs。


@H
502_0@他们的相同点是,都会异步的加载js。但是不同点是,require.js加载完会立即执行;而seajs则是等到进入主函数需要执行时才执行。


@H_502_0@如果使用seajs初始的加载执行效率会比较高,但是在使用的过程中可能会取执行js,因此可能会出现卡顿,影响用户体验(由于我也没试过,要是说错了,别见怪)。而requirejs则是在一开始就把所有加载的js都执行,这时,如果你的模块中有一些执行方法,它们可能并不会按照你想的顺序执行。


@H_5020@因此,如果已经习惯了异步编程,并且希望有完善的文档推荐使用requirejs;如果是想对执行顺序有特殊要求,又方便开发,那么也可以使用seajs。


@H
502_0@

如何解决requirejs中循环依赖问题


@H_5020@如果你定义的某个a模块使用到了b模块,而b模块又使用了a模块,那么就会抛出循环依赖的异常。


@H
5020@比如,我这里写了一个循环依赖的例子。


@H
502_0@

页面


<div class="jb51code">
<pre class="brush:js;">
<!DOCTYPE html>

猜你在找的jQuery相关文章