2016-04-08 20 views
1

Çevrimiçi bir javascript demosu yapmak istiyorum ve kullanıcıların kodu değiştirerek demo davranışını değiştirmelerine izin vermek istiyorum. Projem, RequireJS'i büyük bir başarı ile kullanıyor ve ben de buna bağlı kalmaya karar verdim.Yükleme CodeMirror with RequireJS from CDN

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 sonra bu yolu yüklenmeye çalışıyor gerektir: Önce mutlak URL yolları aracılığıyla editörü yüklemeye çalıştı http://cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/lib/codemirror

  1. Ben önünde /lib/ koymak için sormadım çünkü açıkçası yanlış Yolum, neden böyle yaptı?
  2. .js eksik.

bu başarısızlığın sonra requireJS yapılandırıp göreli yolları kullanmaya çalıştı:

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"} 
     }); 
    } 
); 

Bu sefer .js orada ama yol hala yanlış: http://cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4//lib/codemirror.js Bildirimi çift eğik çizgi.

RequireJS'in belirttiğim yoldan rastgele şeyler koymasını istemedim, o zaman neden böyle yapıyor? Bu işi nasıl yapabilirim?

cevap

1

sorun CodeMirror normalde codemirror.js dosya /lib dizininde olduğunu o o kök dizininde olmasıdır cdnjs barındırılan ancak yol böyle paketlenmiş olmasıdır. Sorununuz daha sonra, daha önce belirtilen barındırma farkı nedeniyle mevcut olmayan bir ../../lib/codemirror yüklemeye çalışan bir eklenti yüklemeye çalıştığınızda ortaya çıkar.

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) { 
}); 
:

böyle bir şey ile çalışmak için aldım