【问题标题】:Typescript modules in client side - What is the best way?客户端的打字稿模块-最好的方法是什么?
【发布时间】:2020-05-17 15:50:17
【问题描述】:

我正在构建一个 Web 应用程序。 我在客户端使用 typescript,在服务器端使用 golang。 我使用打字稿 3.9.2。

我想将.ts 文件编译为.js,并使用模块。 默认编译将其编译为 CommonJS 模块加载器。 然后在浏览器的第二行有一些exports.__...。 我搜索了一下,它基本上说它需要一个名为exports 的变量,而我没有。在这种情况下,我不喜欢在其他脚本标签中定义模拟导出的主要解决方案。

我将compilerOption 更改为"module":"ES6" 然后它编译并加载好(将脚本的类型更改为模块后),但浏览器找不到我要导入的模块。

代码如下:

使用.ts

import * as fun from 'funcs'
let bar =  fun.foo()

funcs.ts

export function foo() :boolean{
return true;
}

使用.js

import * as fun from 'funcs'
var bar =  fun.foo()

funcs.js

export function foo(){
return true;
}

现在浏览器找不到/funcs,它需要use.js。当我将use.js 中的第一行手动更改为

import * as fun from 'funcs.js'

有效。

我能做些什么来让一切自动化? 这里的最佳做法是什么?

【问题讨论】:

    标签: javascript typescript es6-modules


    【解决方案1】:

    ES 模块导入需要有 .js 扩展名,但 Typescript 的模块没有,现在似乎没有内置选项可以自动添加它们,但有人写了 a script 来添加对导入的扩展,或者您可以手动将它们添加到导入中。

    TypeScript Github 上有一些 discussion 关于这个和相关问题。他们正在考虑为浏览器的编译器添加模块解析选项。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 2021-02-21
      • 2010-11-11
      • 1970-01-01
      • 2010-10-09
      • 2010-12-30
      • 2012-02-24
      • 2013-08-27
      相关资源
      最近更新 更多