V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
clino
V2EX  ›  JavaScript

用 codemirror 的时候如何动态加载某个语言的.js 文件?

  •  
  •   clino · 2019-07-12 16:14:25 +08:00 · 4078 次点击
    这是一个创建于 1721 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我主要是后端开发人员,现在想用 vue-codemirror ( https://github.com/surmon-china/vue-codemirror ) 来在线展示代码
    //用的是传统的方式开发木有用 nodejs/webpack/import 这类的

    因为 codemirror 里支持的语言很多,如果我不想预先加载某个语言的 js,如
    <script type="text/javascript" src="/static/modules/codemirror/5.48.0/mode/javascript/javascript.js?ver=3"></script>
    而想在 javascript 里通过获取到的语言动态地加载相关的 js 文件进来,要用什么方法呢?

    搜了一下动态加载 js 可以用 jQuery.getScript() ,不过不确定是不是比较好的姿势,所以还是来问问看.
    4 条回复    2019-07-18 08:12:32 +08:00
    arrow8899
        1
    arrow8899  
       2019-07-12 20:47:29 +08:00
    require.js
    GTim
        2
    GTim  
       2019-07-12 23:10:26 +08:00
    详细点的呢看这个网页的源代码 [https://www.twle.cn/t/yufei/c/helloworld]( https://www.twle.cn/t/yufei/c/helloworld)

    不那么详细的呢就是添加下面的设置即可,比如 C 语言

    var var editor = CodeMirror.fromTextArea('xx');
    var ext = "c";
    var info = CodeMirror.findModeByExtension(ext);
    var mode = "";
    var spec = "";
    if (info) {
    mode = info.mode;
    spec = info.mime;
    }
    if (mode) {
    editor.setOption("mode", spec);
    CodeMirror.autoLoadMode(editor, mode);
    }
    clino
        3
    clino  
    OP
       2019-07-13 08:31:52 +08:00 via Android
    @GTim 感谢例子!之后试试
    clino
        4
    clino  
    OP
       2019-07-18 08:12:32 +08:00
    @GTim 我之前用 vue 结合处理怎么也有问题,用了 vue-codemirror 也各种问题
    刚试了 ace,结果一下就正常显示了,所以准备不用 codemirror 用 ace 了,feature 级别看起来也差不多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   952 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:28 · PVG 05:28 · LAX 14:28 · JFK 17:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.