Javascript 多类型脚本文件配置
下面是一个愚蠢而简单的问题: 我对整个网页工具都是新手 我一直在尝试使用typescript和webpack构建一个简单的web应用程序。在过去,我创建了typescript并编译它们,而不捆绑它们 使用webpack,我已经安装了必要的加载程序、typescript和jQuery。 问题是,我有3个typescript文件:Javascript 多类型脚本文件配置,javascript,typescript,webpack,Javascript,Typescript,Webpack,下面是一个愚蠢而简单的问题: 我对整个网页工具都是新手 我一直在尝试使用typescript和webpack构建一个简单的web应用程序。在过去,我创建了typescript并编译它们,而不捆绑它们 使用webpack,我已经安装了必要的加载程序、typescript和jQuery。 问题是,我有3个typescript文件: main.ts->导入所有资源(图像、css)和其他类型脚本 functions.ts->包含所有自定义函数/模块 ui-controller.ts 在functions
module Functions{
export module StringTools{
export function IsEmpty(): boolean{
//some code
}
}
}
在浏览器中,我知道上面的代码片段将被调用,但它在main.ts(运行时)中无法识别,即使我已经导入了它。
这是我在main.ts中导入它的方式:
import '.src/functions'
有什么建议可以解决这个问题吗?这个答案的第一部分是,您的主
模块
(已替换为名称空间
关键字)没有导出。。。因此,您的函数文件没有导出成员
export namespace Functions { //...
答案的第二部分是,如果您使用的是模块
您设计的文件的工作版本,我建议删除包装名称空间:
功能
export namespace StringTools{
export function IsEmpty(): boolean{
//some code
}
}
答案的第一部分是您的主
模块
(已被名称空间
关键字替换)未导出。。。因此,您的函数文件没有导出成员
export namespace Functions { //...
答案的第二部分是,如果您使用的是模块
您设计的文件的工作版本,我建议删除包装名称空间:
功能
export namespace StringTools{
export function IsEmpty(): boolean{
//some code
}
}
Typescript
module
关键字令人困惑,在1.5版中,它确实被更改为名称空间
,以更好地反映其含义。看
名称空间也称为内部模块。它们用于在全局范围内评估文件时使用。您可以使用typescript来查看名称空间是如何传输的。关键是,名称空间不是模块
然而,Webpack不在全局范围内评估文件,它在函数内评估文件,以提供真正的模块行为
那么,是什么使您的typescript文件成为一个模块呢?关键字export
和import
(但不在您的示例中所示的名称空间中)
Typescript将看到这些关键字,并根据您在tsconfig.json中的配置将它们转换为commonjs\AMD\es6require
或define
语句。现在你有了“真正的”模块。然后Webpack的工作就是对这些模块做一些事情(在线上有很多关于这些模块的信息),这样它们就可以在没有模块的浏览器中工作,但这部分与typescript无关
TL;博士
那个么,你们将如何在Webpack中实现这一点呢
/* functions.ts */
export function IsEmpty(): boolean{
//some code
}
及
如果您想按照使用
模块StringTools
的建议更好地组织代码,只需将其拆分为不同的文件即可。您可以阅读有关语法的更多信息 Typescriptmodule
关键字令人困惑,在1.5版中,它确实被更改为名称空间
,以更好地反映其含义。看
名称空间也称为内部模块。它们用于在全局范围内评估文件时使用。您可以使用typescript来查看名称空间是如何传输的。关键是,名称空间不是模块
然而,Webpack不在全局范围内评估文件,它在函数内评估文件,以提供真正的模块行为
那么,是什么使您的typescript文件成为一个模块呢?关键字export
和import
(但不在您的示例中所示的名称空间中)
Typescript将看到这些关键字,并根据您在tsconfig.json中的配置将它们转换为commonjs\AMD\es6require
或define
语句。现在你有了“真正的”模块。然后Webpack的工作就是对这些模块做一些事情(在线上有很多关于这些模块的信息),这样它们就可以在没有模块的浏览器中工作,但这部分与typescript无关
TL;博士
那个么,你们将如何在Webpack中实现这一点呢
/* functions.ts */
export function IsEmpty(): boolean{
//some code
}
及
如果您想按照使用
模块StringTools
的建议更好地组织代码,只需将其拆分为不同的文件即可。您可以阅读有关语法的更多信息 是的,它正常工作,但与捆绑的网页,不知何故它不工作是它正常工作,但与捆绑的网页,不知何故它不工作,它将需要我改变结构使用导入由于网页?不,但我认为摆脱名称空间是正确的方式做到这一点。如果您想要最小的更改,请执行导出模块函数
,并从main.ts
执行从.src/Functions'
导入{Functions},因此需要我使用导入来更改结构,因为webpack?不,但我认为取消名称空间是正确的方法。如果您想要最小的更改,请执行导出模块函数的操作,并从main.ts
doimport{Functions}从.src/Functions'