zoukankan      html  css  js  c++  java
  • RequireJS 循环依赖报 模块undefined 处理方案

    RequireJS 循环依赖

            开始学习使用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);
    }
    }
    });

  • 相关阅读:
    Java之内部类
    java之对象的前世今生
    java之继承
    java之接口
    何为大学 大学何为?
    丁香般的姑娘
    MySQL创建数据库与创建用户以及授权
    CentOS6.8手动安装MySQL5.6
    linux 修改myql 编码配置等信息参考
    Centos6.8 Mysql5.6 安装配置教程
  • 原文地址:https://www.cnblogs.com/sunshq/p/4503841.html
Copyright © 2011-2022 走看看