使用requirejs与Typescript和AMD相结合的相对路径

时间:2013-05-04 16:03:27

标签: requirejs typescript relative-path amd

有几个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");

关于打字稿,任何事都可以。它可以找到模块。但是,有了requirejs就会出现问题。它不知道模块“../folder1/math”,它只知道“数学”。

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

在requirejs配置和Typescript中的import语句中的任何地方使用绝对路径可以解决问题。

我这样做错了吗?或者是绝对的路径?

2 个答案:

答案 0 :(得分:7)

指定baseUrl等同于Typescript文件的根文件夹:

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

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

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

答案 1 :(得分: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...
    }
});