在TypeScript中是否可以从uri导入模块或引用定义文件?
我们正在将RequireJS用于我们的应用程序,并且希望从CDN提供我们的一些定义文件和TypeScript(或生成的JavaScript)文件,而不是将它们全部直接包含在我们的项目中.
引用定义文件
在TypeScript中,我们可以像这样引用定义文件:
/// <reference path="jquery-1.8.3.d.ts" />
Run Code Online (Sandbox Code Playgroud)
但是,我们想要做的是:
/// <reference path="https://github.com/borisyankov/DefinitelyTyped/raw/master/jquery/jquery-1.8.d.ts" />
export class UsesSomethingFromJQuery {
TestMethod(element: JQuery) {
// Do something with the supplied element
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我不打算使用Boris的github链接作为CDN.我用链接来演示这个概念.
导入TypeScript文件
我们还想从一个公共网站导入模块,如下所示:
import OtherModule = module('http://some-internal-site/ts/other');
export class UsesSomethingFromOther {
TestMethod(c: OtherModule.TestClass) {
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在为模块提供uri时,我收到错误"无效的导入路径".
我们要解决的问题
我们有一个TypeScript文件库,可以为我们的控件,一些REST服务包装器和其他实用程序生成JavaScript.我们想在其他Web应用程序中使用这些常用控件.
当我们有一个特定于我们的某个网站的TypeScript文件(因此不是公共核心的一部分)依赖于在公共核心中定义的类时,我们希望使用uri引用依赖关系.因此上面的问题.
如果这些只是JavaScript源文件,我们会将它们托管在内部CDN上并从那里引用,但是使用TypeScript编译步骤我们会遇到问题.我们是以错误的方式接近这个吗?有没有更好的办法?
我认为从CDN服务您的JavaScript输出是一个好主意,这会影响您的模块加载器或脚本标记,但.d.ts运行时不需要这些文件.
您可以在TypeScript中调整RequireJS和jQuery的这个示例,以便像这样远程加载文件...
.d.ts)require.config.app.ts
///<reference path="require.d.ts" />
///<reference path="jquery.d.ts" />
require.config({
paths: {
'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min'
}
});
require(['jquery'], function (jquery) {
jquery(document).ready(() => {
alert('Your code executes after jQuery has been loaded.');
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6105 次 |
| 最近记录: |