【发布时间】:2013-05-04 16:03:27
【问题描述】:
有几个 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 语句中,都可以解决问题。
我做错了吗?或者是绝对路径?
【问题讨论】:
-
我发现绝对路径或相对于需要 js 加载的第一个模块的路径(通常是我的 js 应用程序的根目录 - Scripts 文件夹或 Durandal 的 App 文件夹 - 但不是一定是我网站的根)工作。
-
非常感谢您的回答。如果第一个模块位于 /Scripts 中,则 baseUrl 将设置为该路径。然后,如果使用“folder1”中的模块,关于 requirejs,它必须像“folder1/blabla”一样处理。然后你会在 Typescript 语句中写什么?你写模块(“folder1/blabla”)吗?如果写入import语句的模块保存在“folder2”中怎么办?那么 Typescript 是否接受模块(“folder1/blabla”)?
-
是的。据我所知,无论您从何处导入,路径都不会改变(只要您仍然在同一个应用程序上下文中 - 所以仍然在从该初始基本 url 加载的模块链中)。
标签: requirejs typescript relative-path amd