"./"路径规范是什么意思?

Pra*_*nna 1 javascript path filepath requirejs

我一直在阅读RequireJS

我没有区别

define(["./cart", "./inventory"], function(cart, inventory) {...}
Run Code Online (Sandbox Code Playgroud)

 define(["cart", "inventory"], function(cart, inventory) {...}
Run Code Online (Sandbox Code Playgroud)

"./"有什么不同?我们还有什么办法可以使用没有"./"的依赖路径?

Lou*_*uis 5

一般而言,存在.,..以及/在模块的名称在RequireJS的含义与用于HTTP路径相同.

./依赖项中的存在告诉RequireJS从当前目录开始搜索.如果您想要的是使用您知道的模块与需要它的目录相同,那么它非常有用.假设moduleA需要moduleB,并且两者都在同一目录中,然后moduleA可以只需要"./moduleB".这样做的一个好处是您不必担心模块的存储位置.如果你移动它们但它们总是在同一目录中,那么moduleA将始终找到moduleB.

另一件事是,如果您require("moduleX")有多个名为moduleX的模块可用,您将获得哪个模块?相对路径阐明了您将获得哪一个.

你问你如何摆脱./第一,我问你真的想摆脱它吗?在我给出的场景中,两个模块在同一个目录中并且这种关系意味着稳定,那么摆脱它是没有意义的./.它实际上可以帮助人们阅读代码.如果你需要的是像jQuery,它恰好在某个时刻与另一个模块位于同一个目录中,但可以合法地安装在其他地方,并且你可以想象它对于给定的应用程序是唯一的,那么它会使让它成为一个全球知名的地方.为此,您可以paths在requirejs配置中使用,例如:

paths: {
   'jquery': 'external/jquery-1.9.1'
}
Run Code Online (Sandbox Code Playgroud)

这是实际应用程序的实际代码部分.无论哪个模块想要jquery,它都会发布require("jquery").它不必担心jquery是否相对于自身而言.您可以为任何您喜欢的模块指定这样的路径,而不仅仅是jQuery.如果将来jQuery移动到其他位置或者您想从CDN提供它,那么上面代码段中的这个映射将被编辑,但require("jquery")仍然有效.