Посылка JS - Функции, доступные для объекта windows - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу организовать и представить свои функции на глобальном объекте 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;

Functions.ts

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

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

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 :
.terserr c:

{
  "mangle" false
}

А затем я строю, используя - глобальный флаг :
parcel build index.ts --global namespace

Но когда я проверяю namespace в своей консоли F12:

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

Как я могу поместить свои функции в namespace объект?

Я экспорт всего - на самом деле все работает нормально, если я делаю свою сборку dev: "dev": "parcel index.ts".
Я думаю, что производство помещает все в Замыкание, верно? Вот почему мои функции не отображаются так, как я хочу.

1 Ответ

0 голосов
/ 26 апреля 2020

Итак ... Оказалось, что у меня было $ is not defined при импорте Bootstrap, поэтому ни один из кодов не выполнялся.
Я исправил ошибку, и теперь все работает ..
--global namespace и export default дают мне: namespace.default.utils.messageBox
Так что я предпочитаю window['namespace'] - Он просто удаляет значение по умолчанию ...

...