2016-04-08 6 views
1

私はオンラインのjavascriptデモを作成したいと思います。ユーザーがコードを変更してデモの動作を変更できるようにします。私のプロジェクトはRequireJSを大成功に使用しているので、それに固執することに決めました。CDNからRequireJSでCodeMirrorをロード

require(
    [ 
     "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/codemirror.js", 
     "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/mode/javascript/javascript.js", 
     "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/addon/comment/continuecomment.js", 
     "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/addon/edit/matchbrackets.js", 
     "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/addon/comment/comment.js" 
    ], 
    (CodeMirror)=>{ 
     var editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
      lineNumbers: true, 
      matchBrackets: true, 
      continueComments: "Enter", 
      extraKeys: {"Ctrl-Q": "toggleComment"} 
     }); 
    } 
); 

は、JSは、このパスをロードしようと要求する:まず、私は絶対URLパスを通じてエディタをロードしようとしたhttp://cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/lib/codemirror

  1. は、私は目の前で/lib/を入れて、それを聞いていなかったので、それは明らかに間違っています私の道は、なぜそうしたのですか?
  2. .jsがありません。

は、その失敗した後、私はrequireJSを設定し、相対パスを使用してみました:

requirejs.config({ 
    paths: { 
     codemirror: [ 
      "//cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/" 
     ] 
    }, 
    waitSeconds: 20 
}); 

require(
    [ 
     "codemirror/codemirror", 
     "codemirror/mode/javascript/javascript", 
     "codemirror/addon/comment/continuecomment", 
     "codemirror/addon/edit/matchbrackets", 
     "codemirror/addon/comment/comment" 
    ], 
    (CodeMirror)=>{ 
     var editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
      lineNumbers: true, 
      matchBrackets: true, 
      continueComments: "Enter", 
      extraKeys: {"Ctrl-Q": "toggleComment"} 
     }); 
    } 
); 

この時間は、.jsがありますが、パスはまだ間違っている:http://cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4//lib/codemirror.jsお知らせダブルスラッシュ。

私が指定したパスにランダムなものを入れるようにRequireJSに頼んだわけではありません。どうすればこの作品を作れますか?

答えて

1

問題がcodemirrorは、通常、しかし、それは、cdnjsでホストされている方法は、それがルートディレクトリにあるということです、codemirror.jsファイルが/libディレクトリにあるようにパッケージ化されていることです。アドオンをロードしようとしたときにあなたの問題が発生します。このアドオンは、前述のホストの違いのために存在しない../../lib/codemirrorをロードしようとします。

私はそれがこのようなもので動作するようになった:

requirejs.config({paths:{ 
    codemirror:'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.14.2', 
    'codemirror/lib':'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.14.2'} 
}); 
requirejs(["codemirror/lib/codemirror", "codemirror/addon/comment/continuecomment"], 
function(CodeMirror) { 
}); 
関連する問題