前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >require.js 循环依赖介绍

require.js 循环依赖介绍

作者头像
用户7576687
修改2020-11-09 10:37:12
3.2K0
修改2020-11-09 10:37:12
举报
文章被收录于专栏:POSCREDIT

所谓循环依赖就是a依赖b,b也同时依赖a。

在a执行到require('b')的地方时会停下来去调用b,当去执行b,执行到一半发现require('a'),就停下来去调用a。

解决方案:

当出现循环依赖时,就不要依赖前置加载了,在b需要调用a的某个方法的那个地方先就近加载:var a = require('a'),然后再去调用b中的方法,代码实例如下:

代码语言:javascript
复制
[JavaScript] 纯文本查看 复制代码12345678//b.js:define(["require", "a"],  function(require, a) {    return function(title) {      return require("a").doSomething();    }  });

虽然循环依赖是比较少见的,但是有时候还是会遇到的,下面再介绍一种解决方案:

如果熟悉CommonJS,可以使用exports为模块建立一个空object,该object可以立即被其他模块引用。在循环依赖的两头都如此操作之后,就可以安全地持有其他模块了。这种方法仅在每个模块都是输出object作为模块值的时候有效,换成函数无效。

代码语言:javascript
复制
[JavaScript] 纯文本查看 复制代码1234567// b.js:define(function(require, exports, module) {  var a = require("a");  exports.foo = function () {    return a.bar();  };});

或者,如果你使用依赖注入数组的步骤,则可用注入特殊的"exports"来解决(pos):

代码语言:javascript
复制
[JavaScript] 纯文本查看 复制代码123456// b.js:define(['a', 'exports'], function(a, exports) {  exports.foo = function () {    return a.bar();  };});

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档