浏览代码

Use import() for lazy loading modules

Alex Dima 7 年之前
父节点
当前提交
b2fa948b7c
共有 2 个文件被更改,包括 11 次插入7 次删除
  1. 3 5
      src/monaco.contribution.ts
  2. 8 2
      src/tsconfig.json

+ 3 - 5
src/monaco.contribution.ts

@@ -10,8 +10,6 @@ import Emitter = monaco.Emitter;
 import IEvent = monaco.IEvent;
 import IDisposable = monaco.IDisposable;
 
-declare var require: <T>(moduleId: [string], callback: (module: T) => void) => void;
-
 // --- JSON configuration and defaults ---------
 
 export class LanguageServiceDefaultsImpl implements monaco.languages.json.LanguageServiceDefaults {
@@ -62,8 +60,8 @@ monaco.languages.json = createAPI();
 
 // --- Registration to monaco editor ---
 
-function withMode(callback: (module: typeof mode) => void): void {
-	require<typeof mode>(['./jsonMode'], callback);
+function getMode(): monaco.Promise<typeof mode> {
+	return monaco.Promise.wrap(import('./jsonMode'))
 }
 
 monaco.languages.register({
@@ -73,5 +71,5 @@ monaco.languages.register({
 	mimetypes: ['application/json'],
 });
 monaco.languages.onLanguage('json', () => {
-	withMode(mode => mode.setupMode(jsonDefaults));
+	getMode().then(mode => mode.setupMode(jsonDefaults));
 });

+ 8 - 2
src/tsconfig.json

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