6

有几个 Javascript 文件,组织在文件夹 Scripts/folder1、Scripts/folder2、...

使用 requirejs.config.baseUrl 将文件夹定义为默认文件夹,例如 Scripts/folder1。然后在 requirejs.config.paths 中,一些文件仅使用文件名进行寻址,而一些文件使用相对路径(如 ../folder2/blabla)进行寻址。

在对 Typescipt 文件 folder2/blabla.ts 进行编码时,我们需要来自 folder1 的模块“math”。所以我们写

import MOD1 = module("../folder1/math");

关于 Typescript,一切都很好。它可以找到模块。但是,使用 requirejs 存在问题。它不知道模块“../folder1/math”,它只知道“math”。

问题似乎是 import 语句需要一个文件名,从当前目录开始寻址。但是,这不是 requirejs 知道的模块 id。

在任何地方使用绝对路径,无论是在 requirejs 配置中还是在 Typescript 中的 import 语句中,都可以解决这个问题。

我做错了吗?或者绝对路径是要走的路?

4

2 回答 2

8

指定 abaseUrl以等效于您的 Typescript 文件的根文件夹:

require.config({
    baseUrl: './scripts', 
 }
)

然后,当您使用从脚本文件夹开始的相对路径时,您可以像在 typescript 中通常那样进行导入,并且 requirejs 将使用相同的基本路径。

更新:此演示文稿应该回答您所有的 url / 使用来自 Typescript 问题的 js:http ://www.youtube.com/watch?v=4AGQpv0MKsA代码:https ://github.com/basarat/typescript-amd/blob /master/README.md

于 2013-05-05T01:59:34.213 回答
2

在您需要配置中,为每个模块指定路径。那应该解决路径问题:

require.config({
    paths: {
        jquery: 'libs/jquery-1.7.1.min',
        jqueryui: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min'
        // Other modules...
    }
});
于 2013-05-04T21:54:23.147 回答