jus*_*.me 14 html javascript amd requirejs typescript
我正在使用带有AMD和require.js的Typescript,但我无法使用typescript编译器输出将在加载模块后执行的代码.
这是main.ts:
import { foo } from './bar';
foo('world');
Run Code Online (Sandbox Code Playgroud)
这是bar.ts:
export function foo(name: string) {
alert('Hello ' + name);
}
Run Code Online (Sandbox Code Playgroud)
我使用以下tsconfig.json文件编译它:
{
"compilerOptions": {
"alwaysStrict": true,
"module": "amd",
"outFile": "client.js",
"target": "es5"
},
"files": [
"main.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
并将其包含在我的HTML中,如下所示:
<script data-main="client/client.js" src="/static/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是,生成的JavaScript代码如下所示:
define("bar", ["require", "exports"], function (require, exports) {
"use strict";
function foo(name) {
alert('Hello ' + name);
}
exports.foo = foo;
});
define("main", ["require", "exports", "bar"], function (require, exports, bar) {
"use strict";
bar.foo('world');
});
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了我想main直接在模块中执行代码的事实.所以最后的定义应该是
define(["require", "exports", "bar"], ...
Run Code Online (Sandbox Code Playgroud)
代替
define("main", ["require", "exports", "bar"], ...
Run Code Online (Sandbox Code Playgroud)
目前,我需要用JavaScript编写的第三个脚本来加载main模块,我认为将main模块作为可重用代码是不好的风格.
如何将typescript编译器main.ts作为可执行定义而不是模块定义输出?
Dot*_*ert -5
当您使用“导入...”时,TypeScript 将编译 AMD 模块,如您的问题中所示。您可以尝试以下代码(另请参阅本教程)来验证它是否会产生您要求的输出吗?
/// <reference path="[YOUR IMPORT FILE]" />
/// ...
/**
* Main entry point for RequireJS
*/
require(
[
// YOUR IMPORT DEFINITIONS
],
(/* YOUR IMPORT VARIABLES */) => {
'use strict';
// YOUR CODE HERE
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |