RequireJS 循环依赖报 模块undefined 处理方案
RequireJS 循环依赖
开始学习使用RequireJS之后做了几个小例子,之后想着把手头的项目也用RequireJS写一遍试试。感觉胜利就在前方了,忽然发现始终卡在一个问题上:

很常见的一个问题,根源就是获取不到当前的函数,反复检查了代码,发现并没有异常,纠结许久。
忽然想到之前看API的时候提到的“循环依赖”,当时“循环依赖比较罕见,它也是一个重构代码重新设计的警示灯。”让我直接忽略了这一部分的内容。
循环依赖,指的是两个模块之间相互依赖,即a依赖b,同时b依赖a,那么在这种情况下当b的模块函数被调用时,将会提示模块a undefined。
解决方法是b可以在模块已经定义好后用require()方法再获取,需要把require作为依赖注入进来。
即本来的写法是:
define(['jquery','a'],
function($, a){
return {
loading : function(data){
a.addBag(data);
}
}
});
一般说来你无需使用require()去获取一个模块,而是应当使用注入到模块函数参数中的依赖。现在为了解决循环依赖带来的问题,首先要引入require的依赖,使用require()方法去获取模块a。问题解决了。
define(['require','jquery','a'],
function(require, $, a){
return {
loading : function(data){
require('a').addBag(data);
}
}
});
RequireJS 循环依赖报 模块undefined 处理方案的更多相关文章
- Spring中解决循环依赖报错的问题
什么是循环依赖 当一个ClassA依赖于ClassB,然后ClassB又反过来依赖ClassA,这就形成了一个循环依赖: ClassA -> ClassB -> ClassA 原创声明 本 ...
- Spring:解决因@Async引起的循环依赖报错
最近项目中使用@Async注解在方法上引起了循环依赖报错: org.springframework.beans.factory.BeanCurrentlyInCreationException: Er ...
- Spirng 循环依赖报错:Requested bean is currently in creation: Is there an unresolvable circular reference?
1:前言 最近在项目中遇到了一次循环依赖报错的问题,虽然解决的很快,但是有些不明白的地方,特此记录. 在此我把 bean 的结构和 注入方式单独拎出来进行演示 1.1:报错提示 1.2:错误日志 Ex ...
- IDEA循环依赖报错解决方案
step1.查找循环依赖 step2.在IDEA菜单栏中打开Analyze->Analyze Module Dependencies...看到有的模块被红色的标出来了,此时右边显示了循环依赖,那 ...
- ueditor在使用requirejs时,报ZeroClipboard undefined错误
再网上找到了 http://blog.csdn.net/xundh/article/details/44536665 这样一篇文章, 其中原因说的很明白了 是因为在有requirejs时, ...
- 彻底理解Spring如何解决循环依赖
Spring bean生命周期 可以简化为以下5步. 1.构建BeanDefinition 2.实例化 Instantiation 3.属性赋值 Populate 4.初始化 Initializati ...
- 从一部电影史上的趣事了解 Spring 中的循环依赖问题
title: 从一部电影史上的趣事了解 Spring 中的循环依赖问题 date: 2021-03-10 updated: 2021-03-10 categories: Spring tags: Sp ...
- RequireJS模块化之循环依赖
如果你定义一个循环依赖关系 (a 依赖b 并且 b 依赖 a),那么当b的模块构造函数被调用的时候,传递给他的a会是undefined. 但是b可以在a模块在被引入之后通过require(‘a’)来获 ...
- requirejs解决异步模块加载方案
他首先会遍历enableRegistry取出其中定义的模块,并且将没有加载成功的模块标识注入noLoads数组,如果过期了这里就会报错 如果上述没问题还会做循环依赖的判断,主要逻辑在breakCycl ...
随机推荐
- Android -- java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
使用Bundle 的getParcelableArray 出现了以下错误: Class not found when unmarshallingjava.lang.ClassNotFoundExcep ...
- 昨天在公司加班,上午好像就是弄一个ftp的linux服务问题
在网上找了一些方法,可是其中有通过匿名方式登陆,但是在root的权限下才能存放文件,可是把匿名用户登陆取消之后又不能登陆,就是没有列出怎么来添加一个ftp的用户,今天打算直接装一个linux系统在虚拟 ...
- stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间
[root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...
- MVC - 11(下)jquery.tmpl.js +ajax分页
继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com ...
- Delphi面向对象的可见性表示符
Delphi能通过在声明域和方法的时候用protected.private.public.published和automated指示符来对对象提供进一步的控制.使用这些关键字的语法如下 TSomeOb ...
- iscroll 4.0 滚动(水平和垂直)
1.概述 iscroll 专注于页面滚动js.Iscroll滚动做的挺好,特别是针对手机网页(android.iphone)正好弥补手动滑屏的遗缺,而今研究一番,把代码贴出来,供大家参考. 2.isc ...
- ytu 1059: 判别该年份是否闰年(水题,宏定义)
1059: 判别该年份是否闰年 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 222 Solved: 139[Submit][Status][Web ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- 机器学习系列:python
工欲善其事,必先利其器! 机器学习的理论需要有编程语言才能得以实现,我选择 python 作为编程语言,网络上有篇不错的教程:python 初级教程:入门详解. 转载自http://ww ...
- fis3-postpackager-loader插件说明
fis3-postpackager-loader 静态资源前端加载器,用来分析页面中使用的和依赖的资源(js或css), 并将这些资源做一定的优化后插入页面中.如把零散的文件合并. 注意 此插件做前端 ...