1

我想在全局windows对象上组织和公开我的函数,但无论我尝试什么,我似乎都无法实现它。
我的函数被编写为TypeScript模块,这就是我想公开我的函数的方式:

window.namespace.utils.messageBox
window.namespace.main.initMain

这是我的代码:
index.ts

import { Functions } from './src/Functions';

export default Functions;
// also tried window['namespace'] = Functions;

函数.ts

import { UtilFunctions } from './Utils/UtilFunctions';
import { MainFunctions } from './Main/InitMain/MainFunctions';

export module Functions {
    export var main = MainFunctions;
    export var utils = UtilFunctions;
}

实用函数.ts

import { MessageBox } from './MessageBox/MessageBox';

export module UtilFunctions {
    export var messageBox = MessageBox
};

MainFunctions.ts

import { InitMain } from "./InitMain";

export module MainFunctions {
    export var initMain = InitMain;
}

经过一番搜索和试验,我意识到我需要设置一个Terser Miny Option :
.terserrc:

{
  "mangle" false
}

然后我正在使用--global 标志进行构建:
parcel build index.ts --global namespace

但是当我namespace在我的 F12 控制台中检查时:

namespace
{…}
__esModule: true
<prototype>: Object { … }

如何将我的功能放到namespace对象上?

我正在导出所有内容 - 事实上,如果我进行开发构建,它可以正常工作:"dev": "parcel index.ts".
我认为生产是把所有东西都封闭起来,对吗?这就是我的功能没有像我希望的那样公开的原因。

4

1 回答 1

1

所以...原来我$ is not defined在导入 Bootstrap 时遇到了问题,所以没有任何代码被执行。
我已经修复了错误,现在一切正常..
and--global namespaceexport default了我:namespace.default.utils.messageBox
所以我更喜欢window['namespace']- 它只是删除了默认值......

于 2020-04-26T10:33:02.780 回答