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

时间:2013-10-29 10:22:33

标签: javascript path requirejs filepath

我一直在阅读RequireJS

我没有区别

define(["./cart", "./inventory"], function(cart, inventory) {...}

 define(["cart", "inventory"], function(cart, inventory) {...}

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

6 个答案:

答案 0 :(得分:5)

一般来说,RequireJS中模块名称中.../的含义与HTTP路径的含义相同。

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

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

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

paths: {
   'jquery': 'external/jquery-1.9.1'
}

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

答案 1 :(得分:1)

在代码的上下文中,它意味着将cart定义在与当前执行脚本相同的目录中。

另一种方法是使用绝对路径:

/var/www/site/cart

为:

define(["/var/www/site/cart", "/var/www/site/inventory"], function(cart, inventory) {...}

答案 2 :(得分:1)

Wikipedia

define(["./cart", "./inventory"], function(cart, inventory) {...}

它搜索文件系统

中当前目录中的特定文件
define(["cart", "inventory"], function(cart, inventory) {...}

它搜索文件系统

中根目录中的特定文件

答案 3 :(得分:0)

./是指当前目录,以使模块当前与脚本位于同一目录中。否./是指节点路径,其中包含本机和已安装的模块(例如:netfs,并且任何使用安装通过npm)使用绝对路径可以获得文件系统中的任何位置(/i/like/node/js/modules.js

答案 4 :(得分:0)

' /'指的是根目录,

' ./'指的是当前目录

define(["./cart", "./inventory"]:这将引用正在执行脚本的当前目录中的cart。

答案 5 :(得分:0)

./ 表示您将保留在同一目录中。