我相信下面的所有四种方法都会起作用,但我不清楚为什么有人会仅仅因为它的代码更多而使用前三种。然而,第一个(也是最冗长的)一个是 RequireJS 文档中给出的。
define "circular1", ["example1"], -> "circular1"
define "circular2", ["example2"], -> "circular2"
define "circular3", ["example3"], -> "circular3"
define "circular4", ["example4"], -> "circular4"
#1
define "example1", ["require", "circular1"], (require, circular) ->
alert "example1 Before: " + circular
circular = require "circular1"
alert "example1 After: " + circular
#2
define "example2", ["require"], (require) ->
alert "example2 Before: " + circular
circular = require "circular2"
alert "example2 After: " + circular
#3
define "example3", ["circular3"], (circular) ->
alert "example3 Before: " + circular
circular = require "circular3"
alert "example3 After: " + circular
#4
define "example4", [], ->
alert "example4 Before: " + circular
circular = require "circular4"
alert "example4 After: " + circular
require ["example1"], ->
require ["example2"], ->
require ["example3"], ->
require ["example4"], ->
- 如果
circularDependency
在你执行显式之前是未定义的require
,那么麻烦将它包含在定义中(#1 和#3)有什么意义呢? - 如果
require
在加载第一个脚本时始终全局可用,为什么还要传入它?这只是代码清晰度的问题,即。是否只是为了在代码顶部提供所有依赖项的简洁快照(因为您可能要require
到很久以后才能真正解决显式问题?或者它是否对 RequireJS 如何进行优化有一些实际影响,具体取决于是否或不是它包含在define
?
如果仅仅因为它“有效”而对我的软件产生负面影响,我不想使用任何这些变体。