从文档以及我能找到的所有答案中,可能会看到流星文件按深度优先加载,然后按字母顺序加载。我找不到任何详细说明相同深度的文件是否按字母顺序加载,与同一深度的所有其他文件相比,按字母顺序排列在其文件夹中,但优先考虑父文件夹的字母顺序,或其他一些变体。
假设我们有以下文件:
b/file0.js
b/d/file3.js
c/file2.js
c/a/file1.js
它们的加载顺序是什么?
对文档的一种解释是订单将是file1, file3, file0, file2
(深度为2的文件首先按字母顺序加载,然后是深度为1的文件)
另一种可能性是file3, file0, file1, file2
(b目录中的文件在c子目录中的文件之前加载)。我猜这不是它,因为文档说首先加载最深子目录中的文件。
最后,我还可以看到file3, file1, file0, file2
正在发生(b中的文件在c中的文件之前加载,如果它们是相同的深度)
答案 0 :(得分:4)
讨厌的加载顺序函数在/tools/packages.js
中定义。一步一步地进行以下比较:
main.*
的文件
lib
的文件都会在没有lib
,列表中较高的规则在较低的规则之前具有优先级,因此例如在非html主文件之前加载非主.html文件。在您的情况下,文件
b/file0.js
b/d/file3.js
c/file2.js
c/a/file1.js
首先将拆分为具有相同路径段数的组:
b/d/file3.js
c/a/file1.js
---
b/file0.js
c/file2.js
然后,在每个组中,整个路径按字母顺序排序。
让我们来看一个更复杂的例子:
x/lib/0.js
a/index.html
a/main.js
a/f.js
b/lib/echo.html
b/lib/main.js
k_2.js
k.js
c.js
lib/widget.html
d/e.js
首先,将文件拆分为.html和非html组,首先放置html文件:
a/index.html
b/lib/echo.html
lib/widget.html
----------
x/lib/0.js
a/main.js
a/f.js
b/lib/main.js
k_2.js
k.js
c.js
d/e.js
然后,在两个组中,最后放置main.
个文件:
a/index.html
b/lib/echo.html
lib/widget.html
----------
x/lib/0.js
a/f.js
k_2.js
k.js
c.js
d/e.js
-----
a/main.js
b/lib/main.js
现在,在每个创建的子组中,在其路径中包含lib
的文件和不包含{...}}的文件之间划分文件:
b/lib/echo.html
lib/widget.html
-----
a/index.html
----------
x/lib/0.js
-----
a/f.js
k_2.js
k.js
c.js
d/e.js
----------
b/lib/main.js
-----
a/main.js
在您现在拥有的群组中,根据路径段数创建子群。
b/lib/echo.html
-----
lib/widget.html
----------
a/index.html
----------
x/lib/0.js
----------
a/f.js
d/e.js
-----
k_2.js
k.js
c.js
----------
b/lib/main.js
----------
a/main.js
在这些最终组中,按字母顺序对完整路径进行排序:
b/lib/echo.html
-----
lib/widget.html
----------
a/index.html
----------
x/lib/0.js
----------
a/f.js
d/e.js
-----
c.js
k.js
k_2.js
----------
b/lib/main.js
----------
a/main.js
希望这有帮助。
答案 1 :(得分:2)
按以下顺序加载:file3, file1, file0, file2
。所以你最后的猜测是正确的。在客户端和服务器上都是如此。
我做了一些其他的快速测试,并且没有深入研究代码,我敢打赌它首先按深度排序,然后按字母顺序排序。
为了执行测试,我刚刚创建了一个新项目并添加了问题的文件结构。在每个文件中,我添加了一个带有文件名的console.log
。