loadMonaco.js 958 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import loadScript from './loadScript'
  2. import ELEMENT from 'element-ui'
  3. import pluginsConfig from './pluginsConfig'
  4. // monaco-editor单例
  5. let monacoEidtor
  6. /**
  7. * 动态加载monaco-editor cdn资源
  8. * @param {Function} cb 回调,必填
  9. */
  10. export default function loadMonaco(cb) {
  11. if (monacoEidtor) {
  12. cb(monacoEidtor)
  13. return
  14. }
  15. const { monacoEditorUrl: vs } = pluginsConfig
  16. // 使用element ui实现加载提示
  17. const loading = ELEMENT.Loading.service({
  18. fullscreen: true,
  19. lock: true,
  20. text: '编辑器资源初始化中...',
  21. spinner: 'el-icon-loading',
  22. background: 'rgba(255, 255, 255, 0.5)'
  23. })
  24. !window.require && (window.require = {})
  25. !window.require.paths && (window.require.paths = {})
  26. window.require.paths.vs = vs
  27. loadScript(`${vs}/loader.js`, () => {
  28. window.require(['vs/editor/editor.main'], () => {
  29. loading.close()
  30. monacoEidtor = window.monaco
  31. cb(monacoEidtor)
  32. })
  33. })
  34. }