【发布时间】:2016-05-12 22:53:41
【问题描述】:
我想制作一个在线 javascript 演示,并希望允许用户通过更改代码来更改演示行为。我的项目使用 RequireJS 取得了巨大成功,所以我决定坚持使用它。首先我尝试通过绝对 URL 路径加载编辑器:
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"}
});
}
);
Require JS 尝试加载此路径然后:http://cdnjs.cloudflare.com/ajax/libs/codemirror/5.13.4/lib/codemirror 这显然是错误的,因为
- 我没有要求它把
/lib/放在我的路径前面,那它为什么要这样做呢? -
.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 将随机的东西放在我指定的路径中,那它为什么这样做呢?我怎样才能做到这一点?
【问题讨论】:
标签: javascript requirejs cdn codemirror