Javascript 全局模块名

Javascript 全局模块名,javascript,typescript,gruntjs,Javascript,Typescript,Gruntjs,我想知道如何将名称空间声明添加到我的js包中 我在myclass.ts中有typescript类 export class MyClass{ ... } 我在其他文件中使用这个类 export {MyClass} from "myclass" ... let a:MyClass = new MyClass(); 我将其编译成vs代码,并使用grunt自动生成不同文件的concat,并使用简洁的代码最小化 一切都很好,除了在js中使用类时,我希望在类之前有一个名称空间 <script s


我想知道如何将名称空间声明添加到我的js包中

我在myclass.ts中有typescript类

export class MyClass{
...
}
我在其他文件中使用这个类

export {MyClass} from "myclass"
...
let a:MyClass = new MyClass();
我将其编译成vs代码,并使用grunt自动生成不同文件的concat,并使用简洁的代码最小化

一切都很好,除了在js中使用类时,我希望在类之前有一个名称空间

<script src="mylib.min.js"></script>
...
var a = new MYLIB.MyClass();

...
var a=新的MYLIB.MyClass();
在这个过程中,我在哪里引入“MYLIB”名称空间? 我想继续使用导出/导入模式,因此我不想在TS文件中包含名称空间或模块名称


有没有grunt插件可以这样做?我找不到关于这个主题的任何明确信息或示例。

您的代码混合了javascript和typescript。您正在从typescript构建一个缩小的javascript文件,然后编写进一步的javascript(
var a=new MYLIB.MyClass();
)。这让我感到困惑,因为通常情况下,您会用其中一种语言编写所有代码。也就是说,javascript没有任何名称空间的概念,因此
new MYLIB.MyClass()
无效。另一方面,名称空间确实存在于typescript中,因此如果在typescript上下文中使用该类,则可以使用该语法:


关于如何在纯javascript中伪造部分名称空间的信息,请参见。基本上,javascript中的“名称空间”与其他任何名称空间一样,只是一个对象,这就是为什么
new namespace.myClass()
不起作用的原因;您不能将类定义放在对象上。

您的代码混合了javascript和typescript。您正在从typescript构建一个缩小的javascript文件,然后编写进一步的javascript(
var a=new MYLIB.MyClass();
)。这让我感到困惑,因为通常情况下,您会用其中一种语言编写所有代码。也就是说,javascript没有任何名称空间的概念,因此
new MYLIB.MyClass()
无效。另一方面,名称空间确实存在于typescript中,因此如果在typescript上下文中使用该类,则可以使用该语法:


关于如何在纯javascript中伪造部分名称空间的信息,请参见。基本上,javascript中的“名称空间”与其他任何名称空间一样,只是一个对象,这就是为什么
new namespace.myClass()
不起作用的原因;您不能将类定义放在对象上。

没有找到仅使用Grunt的简单解决方案,然后我转到webpack并使用

output: {
    library: 'MYLIB',
    libraryTarget: 'var',
    filename: '[name].' + config.version + '.js' ,
    path: path.resolve(__dirname, 'dist'),
}

我知道webpack和grunt不打算以相同的方式使用,但不知何故,我们可以同时使用它们。我也会在网页上看一下。感谢所有读者,并花时间回答。安全地呆在家里

仅用Grunt没有找到任何简单的解决方案,然后我转到webpack并使用

output: {
    library: 'MYLIB',
    libraryTarget: 'var',
    filename: '[name].' + config.version + '.js' ,
    path: path.resolve(__dirname, 'dist'),
}

我知道webpack和grunt不打算以相同的方式使用,但不知何故,我们可以同时使用它们。我也会在网页上看一下。感谢所有读者,并花时间回答。安全地呆在家里

感谢您的回答,用例是因为我仍然拥有几个html/js需要维护。我完全理解我们在根目录下使用js对象来伪造名称空间的方式。我的问题是如何在使用grunt的构建过程中自动创建这个根。再次感谢您的回答,这个用例是因为我仍然有几个html/js需要维护。我完全理解我们在根目录下使用js对象来伪造名称空间的方式。我的问题是如何在使用grunt的构建过程中自动创建这个根。再次感谢。