客户端的 Typescript 模块 - 最好的方法是什么?
Typescript modules in client side - What is the best way?
我正在构建一个网络应用程序。
我在客户端使用 typescript,在服务器端使用 golang。
我使用打字稿 3.9.2.
我想将 .ts
文件编译为 .js
,并使用模块。
默认编译将其编译为 CommonJS 模块加载器。
然后在浏览器中它在第二行有一些 exports.__...
。
我搜索了一下,它基本上说它想要一个名为 exports 的变量,但我没有。在这种情况下,我不喜欢在其他脚本标签中定义模拟导出的主要解决方案。
我将 compilerOption
更改为 "module":"ES6"
然后它编译并加载良好(将脚本类型更改为模块后),但是浏览器找不到我要导入的模块。
代码如下:
use.ts
import * as fun from 'funcs'
let bar = fun.foo()
funcs.ts
export function foo() :boolean{
return true;
}
use.js
import * as fun from 'funcs'
var bar = fun.foo()
funcs.js
export function foo(){
return true;
}
现在浏览器无法找到 use.js
所需的 /funcs
。当我手动将 use.js
中的第一行更改为
import * as fun from 'funcs.js'
有效。
我该怎么做才能让一切都自动进行?
这里的最佳做法是什么?
ES 模块导入需要有 .js
扩展名,但 Typescript 的模块没有,现在似乎没有自动添加它们的内置选项,但有人写了 a script 将扩展添加到导入中,或者您可以手动将它们添加到导入中。
TypeScript Github 上有一些关于此问题和相关问题的 discussion。他们正在考虑为浏览器的编译器添加模块解析选项。
我正在构建一个网络应用程序。 我在客户端使用 typescript,在服务器端使用 golang。 我使用打字稿 3.9.2.
我想将 .ts
文件编译为 .js
,并使用模块。
默认编译将其编译为 CommonJS 模块加载器。
然后在浏览器中它在第二行有一些 exports.__...
。
我搜索了一下,它基本上说它想要一个名为 exports 的变量,但我没有。在这种情况下,我不喜欢在其他脚本标签中定义模拟导出的主要解决方案。
我将 compilerOption
更改为 "module":"ES6"
然后它编译并加载良好(将脚本类型更改为模块后),但是浏览器找不到我要导入的模块。
代码如下:
use.ts
import * as fun from 'funcs'
let bar = fun.foo()
funcs.ts
export function foo() :boolean{
return true;
}
use.js
import * as fun from 'funcs'
var bar = fun.foo()
funcs.js
export function foo(){
return true;
}
现在浏览器无法找到 use.js
所需的 /funcs
。当我手动将 use.js
中的第一行更改为
import * as fun from 'funcs.js'
有效。
我该怎么做才能让一切都自动进行? 这里的最佳做法是什么?
ES 模块导入需要有 .js
扩展名,但 Typescript 的模块没有,现在似乎没有自动添加它们的内置选项,但有人写了 a script 将扩展添加到导入中,或者您可以手动将它们添加到导入中。
TypeScript Github 上有一些关于此问题和相关问题的 discussion。他们正在考虑为浏览器的编译器添加模块解析选项。