我在尝试通过requirejs加载ckeditor时遇到问题(我已经尝试将主要的ckeditor js文件转换为单独的模块,但这只会导致所有地狱崩溃)所以我现在正在检查是否存在这是一个非常简单的方法,我错过了。
我知道requirejs允许你加载普通的js脚本,所以可能只是加载ckeditor.js文件(未经编辑,所以它仍然是一个IIFE /自执行功能) - 可以使用requirejs或者你正在使用requirejs用于加载模块,那么整个项目是否需要基于模块?
任何帮助表示感谢。
亲切的问候, 标记
答案 0 :(得分:26)
或者,您可以创建RequireJS填充程序以按正确的顺序加载内容,并将正确的RequireJS模块名称别名到CKEditor分发文件。
这意味着你的模块仍然声明它依赖于CKEditor,这比它只是通过魔法出现要好得多。
require.config({
shim: {
'ckeditor-jquery':{
deps:['jquery','ckeditor-core']
}
},
paths: {
"jquery": '/javascript/jquery-1.7.1/jquery.min',
'ckeditor-core':'/javascript/ckeditor-3.6.4/ckeditor',
'ckeditor-jquery':'/javascript/ckeditor-3.6.4/adapters/jquery'
}
});
然后在一个模块中你可以依赖ckeditor-jquery(或ckeditor-core,如果你不需要jQuery集成)并且知道它将可用:
require(
[
"jquery",
"ckeditor-jquery"
],
function( _jquery_ ) {
$('#editorContent2').ckeditor({
customConfig : '',
skin:'office2003'
});
}
}
答案 1 :(得分:2)
另一种方法:
var require = {
"shim": {
"path/foo/ckeditor/ckeditor": { "exports": "CKEDITOR" }
}
};
define(['moduleX', 'path/foo/ckeditor/ckeditor'], function (x, ckeditor) {
ckeditor.editor.prototype.fooFunc = function() {
};
});
答案 2 :(得分:-2)
好的,好像我在这里回答了我自己的问题。
我没有尝试将ckeditor分解为模块,而是使用RequireJs将脚本加载到其中。
require(['require', 'dependancy-A', 'dependancy-B', 'dependancy-C'], function(require, A, B, C){
// this = [object DOMWindow]
// CKEDITOR_BASEPATH is a global variable
this.CKEDITOR_BASEPATH = '/ckeditor/';
require(['/ckeditor/ckeditor'], function(){
// Code to create a new editor instance
});
});
```