Use import() for lazy-loading modules

This commit is contained in:
Alex Dima 2018-03-12 14:16:13 +01:00
parent 22f5c6aa9e
commit 4903cb5f00
2 changed files with 13 additions and 9 deletions

View file

@ -10,8 +10,6 @@ import Emitter = monaco.Emitter;
import IEvent = monaco.IEvent; import IEvent = monaco.IEvent;
import IDisposable = monaco.IDisposable; import IDisposable = monaco.IDisposable;
declare var require: <T>(moduleId: [string], callback: (module: T) => void) => void;
// --- HTML configuration and defaults --------- // --- HTML configuration and defaults ---------
export class LanguageServiceDefaultsImpl implements monaco.languages.html.LanguageServiceDefaults { export class LanguageServiceDefaultsImpl implements monaco.languages.html.LanguageServiceDefaults {
@ -93,16 +91,16 @@ monaco.languages.html = createAPI();
// --- Registration to monaco editor --- // --- Registration to monaco editor ---
function withMode(callback: (module: typeof mode) => void): void { function getMode(): monaco.Promise<typeof mode> {
require<typeof mode>(['./htmlMode'], callback); return monaco.Promise.wrap(import('./htmlMode'))
} }
monaco.languages.onLanguage(htmlLanguageId, () => { monaco.languages.onLanguage(htmlLanguageId, () => {
withMode(mode => mode.setupMode(htmlDefaults)); getMode().then(mode => mode.setupMode(htmlDefaults));
}); });
monaco.languages.onLanguage(handlebarsLanguageId, () => { monaco.languages.onLanguage(handlebarsLanguageId, () => {
withMode(mode => mode.setupMode(handlebarDefaults)); getMode().then(mode => mode.setupMode(handlebarDefaults));
}); });
monaco.languages.onLanguage(razorLanguageId, () => { monaco.languages.onLanguage(razorLanguageId, () => {
withMode(mode => mode.setupMode(razorDefaults)); getMode().then(mode => mode.setupMode(razorDefaults));
}); });

View file

@ -1,8 +1,14 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "es6", "module": "esnext",
"moduleResolution": "node", "moduleResolution": "node",
"outDir": "../out", "outDir": "../out",
"target": "es5" "target": "es5",
"lib": [
"dom",
"es5",
"es2015.collection",
"es2015.promise"
]
} }
} }