【问题标题】:How to load scripts via ajax when monaco editor is used使用 monaco 编辑器时如何通过 ajax 加载脚本
【发布时间】:2023-03-25 00:14:01
【问题描述】:

当我在 Web 应用程序中使用 monaco 编辑器时,加载器会导致之前定义的 ajax 脚本加载不再加载。见例子here

<script src="https://unpkg.com/jquery@3.2.1"></script>
<script src="https://unpkg.com/monaco-editor@0.8.3/min/vs/loader.js"></script>
<script>
  $.ajax({
    url: 'https://unpkg.com/vue@2.2.6/dist/vue.js',
    dataType: 'script'
  }).done(function() {
    console.log('Vue', typeof Vue)
  })      
</script>

在这个例子中,Vue 是未定义的,移除 loader.js 标记,Vue 不再是未定义的,它会将开发模式消息记录到控制台

我尝试加载为文本并调用 eval、eval.call 和上下文、创建脚本标记和附加、没有 jquery 的 vanilla ajax 调用、使用 require(src) 并且加载器似乎正在积极地捕获所有脚本加载。

我有一个一直在使用 ace 编辑器的应用程序,并且正在尝试切换到 monaco。该应用程序是交互式的,用户编写查询和脚本并显示结果。从结果中,用户可以进行选择,该选择可以调用另一个查询来更新结果。

【问题讨论】:

    标签: ajax monaco-editor


    【解决方案1】:

    monaco loader.js 是一个小型 AMD 加载程序 - 所以使用这个:

    require(['https://unpkg.com/vue@2.2.6/dist/vue.js'], function(theVue) {
      console.log('the Vue is ' + theVue);
    })
    

    查看 vue 源文件的第一部分 - 它检查 AMD 并以另一种方式初始化(​​如果存在)。

    【讨论】:

    • 谢谢,这是有用的信息。我最终得到的真正答案是在 iframe 中使用 monaco 来隔离加载程序并保持 ajax 调用按原样工作
    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2011-08-01
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多